Window界面元素Label和Button可以根据登录语言设置不同的文本,该文本也可针对不同的账套设置。
文本标签LBNMR:每个需要设置多语言的界面元素,具有一个文本标签属性,属性值为标签ID,全系统唯一。比如代码(TranButton name="BtnTranMML3M" lbnmr="MML3M")中的lbnmr属性,其值MML3M则是全系统唯一的标签ID。
文本标签LBNMR2:有的Button具有两个文本,例如CTranButtonUI,第二个文本m_ttext用来显示在Tab上。比如代码(TranButton name="BtnTran" lbnmr="MBRA" lbnmr2="MBRA" trancode="MBRA" text="出库单" ttext="出库单(材料)"),CTranButtonUI重载了函数SetText2,该函数在CButtonUI中声明。
多语言设置:SPRO->管理->语言标签。新增一个标签ID,然后管理该标签ID的语言文本。
开发注意事项
标签ID的多语言文本是在登录时加载到内存中的,可以通过宏LAN_GET(lbnmr,LAN,text)得到语言文本text,由于在IDuiTranPage::DoInit()函数中通过枚举子控件进行了文本替换,所以,只需要在IDuiTranPage派生类的DoInit()函数中调用父类的DoInit()即可。
同样,在WindowImplBaseEx::InitWindow()的也做了同样的处理,在其派生类的InitWindow()调用父类的InitWindow()即可。
目前只实现了Label、Button及CListUIEx的表头支持多语言支持。CListUIEx::InsertColumn函数中指定标签ID。
实现方式
-
静态实现
通过XML文件中设置Label和Button的lbnmr属性值,系统会自动替换其文本值。
-
动态实现
通过代码设置界面元素的标签ID:在IDuiTranPage中有一个函数SetLbnmr(LPCTSTR pstrLabelName, LPCTSTR pstrLbnmr),可以在代码中设置Label和Button的标签ID进而达到替换文本你的目的。
CListUIEx::InsertColumn函数中指定标签ID。