Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши программы на заказ. Зарабатывай с помощью сервиса Фриланс!
Ivan Vorontsov
157
Ivan Vorontsov 2015.08.05 04:24 

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

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

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

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

Alexander Voronkov
18835
Alexander Voronkov 2015.08.05 09:54  
Ivan Vorontsov:

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

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

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

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

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

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

Ivan Vorontsov
157
Ivan Vorontsov 2015.08.05 13:20  
Alexander Voronkov:

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

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

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

Только что подумал... наверное никак всё же. Блок условной компиляции всё равно будет создан один раз при компиляции и не сможет измениться при запуске терминала на другом языке. Придётся ручками явно указывать язык и компилировать 2 версии. Печальбеда)
Но всё равно спасибо за помощь, натолкнули на нужные мысли.
Dmitry Fedoseev
42871
Dmitry Fedoseev 2015.08.05 14:26  
В ините присвоить переменным строки на нужном языке никак нельзя?
Комбинатор
15915
Комбинатор 2015.08.05 14:29  
Dmitry Fedoseev:
В ините присвоить переменным строки на нужном языке никак нельзя?
Вопрос про окно настроек
Ivan Vorontsov
157
Ivan Vorontsov 2015.08.05 15:29  
В итоге сделал так. Перевёл окно настроек на английский язык для всех версий, а сообщения от эксперта подгружаются в зависимости от языка терминала.
Vitaly Muzichenko
3412
Vitaly Muzichenko 2015.08.06 21:15  
Ivan Vorontsov:
В итоге сделал так. Перевёл окно настроек на английский язык для всех версий, а сообщения от эксперта подгружаются в зависимости от языка терминала.
Я тоже плотно занялся этим вопросом, в итоге не удалось решить проблему с окном в зависимости от языка, сделал как и у вас, засунул все переводы сообщений в инит, ну а окно конечно на английском, что не очень хорошо для русскоязычных.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий