[QLang] 基于QLang的多语言编程注意事项

1、无论是动态创建组件还是窗体上的组件,组件必需有名称,否则,由于语言文件无法标记区分控件,所以也就无法翻译。同时,组件的所有者必需是窗体或数据模块,否则的话,无法自动翻译,只能由您自己手动响应 LangManager.OnLanguageChange 时调用 LangManager.Translate 方法来完成翻译。

2、QLang 是通过创建了一个TApplicationEvents来响应 Application.OnIdle 来实现自动翻译的,因此,如果你要响应 Application.OnIdle 时,可以独立放置一个 TApplicationEvents 组件,然后响应其OnIdle。如果要直接赋值 Application.OnIdle,则应先保存 Application.OnIdle 的原先的事件处理函数的地址,然后再指向新的事件处理函数中调用原来的处理函数,否则 TApplicationEvents 对象将无法正常工作。

3、QLang 要求语言翻译的每个 ID 唯一,所以如果有语言文件的ID重复时,会自动忽略后加载的语言文件。如果在调试时,会抛出异常,告知是那个语言文件的ID不正确。

4、QLang 启动时,默认会扫描当前应用目录下,扩展名为 *.qlang 的语言文件。如果您的语言文件不在此目录下,请手动调用 LangManager.ScanLanguages 方法指定目录和扩展名,以便加载相应的语言文件。

5、需要多语言处理的字符串,如果要缓存到变量中使用,则请注意通过 LangManager.AddListener 添加一个语言变更响应函数,否则应采用即时翻译的方式。AddListener添加的响应函数应注意在不需要时通过 LangManager.RemoveListener 移除。

分享到: