Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Translator - библиотека для MetaTrader 5

Просмотров:
2428
Рейтинг:
(31)
Опубликован:
2013.01.23 05:25
Обновлен:
2016.11.22 07:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Класс предназначен для локализации сообщений программ MQL5. Словом, всё что выводится в журнал функцией Print(), а также текстовые сообщения выводимые в Alert(), Comment(), MessageBox() можно сделать мультиязычными в одном коде. 

Методы класса:

  • bool init(string progName, ENUM_LANGUAGES lang) - инициализировать объект. На вход подаём название программы и код языка из перечисления в файле LanguagesEnum.mqh.
  • string tr(string str) - переводит строку str*.
  • void print(string str) - печатает в журнале перевод строки str*.
  • void alert(string str) - выводит алерт с переведённой строкой*.
  • void comment(string str) - выводит комментарий с переведённой строкой*.
  • int messageBox(string text, string caption=NULL, int flags=0) - выводит в окне сообщений переведённый текст*, также переводит заголовок окна*. Возвращает один из кодов возврата MessageBox(). Также как и MessageBox(), этот метод нельзя вызывать из пользовательских индикаторов.
  • * - Если в языковом файле нет перевода эквивалента - вернёт/выведет входящую строку.

Как использовать:

  • Файлы Translator.mqh и LanguagesEnum.mqh загрузить в папку MetaTrader 5\MQL5\Include. В первом находится сам класс, во втором - перечисление языков в соответствии со стандартом ISO 639 (на данном этапе в файле перечислены только те языки, на которые переведён терминал. При необходимости можно добавить код любого другого языка, желательно по стандарту ISO 639, чтобы не было путаницы).
  • Создать текстовый файл перевода на "свой" язык  в формате Alias=Translation, где Alias - псевдоним переводимой строки и он же строка-аргумент с которым впоследствии вызываются методы класса, а Translation - текст перевода, который будет в итоге выведен. 
  • Кодировка языкового файла(ов): UTF8(без BOM).
  • Название файла должно строго соответствовать следующему формату: <Название MQL5 кода>.<Код языка прописными латинскими>.ini. Например, текстовый файл с переводом на русский язык для кода MyCode должен называться MyCode.RU.ini. В конечном счёте, количество языковых файлов должно соответствовать количеству языков, на которые вы хотите переводить сообщения.
  • Созданные языковые файлы положить в папку MetaTrader 5\MQL5\Files\Languages. 

В коде:

  • В коде (эксперте, индикаторе, скрипте) подключить файл переводчика (#include <Traslator.mqh>);
  • Создать объект. Например: CTranslator ru;
  • Добавить входной параметр для перевода . Например: input ENUM_LANGUAGES InpToLanguage = RU;
  • Инициализировать объект. Например: ru.init(MQL5InfoString(MQL5_PROGRAM_NAME), InpToLanguage);
  • При необходимости использовать любой из методов. Например: ru.print("Your text").
Важно: если необходимый файл не существует или в файле нет подходящего алиаса, будет выведена строка, переданная методу в качестве аргумента.

В качестве наглядного примера прикреплён скрипт Sample.mq5 и два языковых файла к нему - для перевода на русский и японский языки. Результат работы скрипта (сначала запущен на графике с параметром перевода на русский, потом на японский):

Translator Sample

Советы:

Хотя алиасы можно писать на любом языке и, кроме того, вместо целой фразы алиас может быть просто сокращением, лучше сразу писать на английском и без сокращений. Таким образом:
  • даже если нет ни одного языкового файла, все сообщения будут выведены на английском,
  • автоматом отпадает необходимость писать специальный файл для перевода на английский  (тем, кто писал расширения под CMS Joomla вероятно понять проще - используется та же логика).
Triple Bolling Triple Bolling

Расширенное представление индикатора Bollinger Bands

Exp_ColorCoppock Exp_ColorCoppock

Торговая система с использованием осциллятора ColorCoppock.

Trend Trend

Трендовый индикатор, выполненный в виде цветного облака

TTF TTF

Классический индикатор TTF со сглаживающим методом T3 и линией сигнала.