- 显示:
- 2261
- 等级:
- 已发布:
- 2014.02.10 07:14
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
该类设计用来在 MQL5 程序中支持消息文本的本地化。简言之, 所有通过 Print() 函数帮助输出的日志, 以及 Alert(), Comment(), MessageBox() 中的文本消息都可以在代码中完成多语言。
Class 方法:
- 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 (在此阶段只有客户端使用的翻译语言列在文件中。如有必要您可以添加任意语言代码, 优选遵照 ISO639 标准, 以避免混淆);
- 为 "它的" 语言按照 Alias = Translation 格式创建翻译文本, 此处 Alias 是一个翻译字符串别名, 以及随后调用类方法时的字符串参数, Translation 是最终显示的文本翻译;
- 语言文件编码: UTF8(不带 BOM);
- 文件名限制为如下格式: <MQL5 代码名>.<拉丁大写字母语言代码>.ini。例如, 程序 MyCode 的俄语翻译文本必须是 MyCode.ru.ini。最终, 语言文件的数量必须与您打算翻译的语言数量相对应;
- 将创建的翻译文件放在 MetaTrader 5\MQL5\Files\Languages 文件夹。
代码中:
- 在代码 (EA, 指标, 脚本) 中包含翻译文件 (# include <Traslator.mqh>);
- 创建对象。例如, CTranslator ru;
- 添加翻译输入参数。例如, input ENUM_LANGUAGES InpToLanguage = RU;
- 初始化对象。例如, ru.init(MQL5InfoString(MQL5_PROGRAM_NAME), InpToLanguage);
- 如果必要, 使用任意这些方法。例如, ru.print("您的文本")。
重要事项 如果需要的文件不存在或文件没有适用的别名, 则传递到方法中的字符串将会被直接显示。
作为一个说明性的例子 Sample.mq5 脚本和它的两个翻译成俄语和日语的附加语言文件。脚本的工作结果 (首先它在图表中运行, 按参数翻译成俄文, 然后是日文):
推荐:
尽管别名可以写成任意语言并且别名可能只是一个缩写, 而不是整个短语。最好以英文书写而且不用缩写。所以:- 如果没有语言文件, 所有的消息将显示为英文,
- 需要编写翻译成英语的特殊文件将被自动淘汰 (那些在 Joomla CMS 扩展下的人大概更容易理解它, 因为逻辑是一样的)。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1484
![三重布林](https://c.mql5.com/i/code/indicator.png)
布林带指标的先期呈现
![HawaiianTsunamiSurfer, 通过统计判断价格爆炸](https://c.mql5.com/i/code/expert.png)
该系统, 基于动量指标, 假设非常强的价格走势是决定因素。它就是骑上出现的海啸, 例如, 美国非农数据发布。HawaiianTsunamiSurfer 可与 AUDUSD, USDJPY 和 EURUSD 完美工作。