多语言套件Acro Multi-Language Suite for Delphi Win32/64

火星牛 2020-06-30 11:50:43
一组很方便实现多语言的元件。
资料字典提供原语与多国文字的映射,多语言套件在程式运行时从文档,资料库,或 DFM 载入资料字典到 Hash 表,以提供最快的搜寻速度;最后根据要替换多语言的元件的类别,找到它的替换函数,替换掉该元件的各部分的文字。
支持任意第三方元件,支持Unicode。
主要特色:
•不需要修改1行代码就能多语言化;(或少量修改,如,修改掉没有使用Resourcestring的字串弹出消息)
•支持任意第3方元件;(替换函数只需要写1次)
•支持 Unicode;
•多种字典来源,随你喜好将字典外挂还是内嵌,支持你发布独立的 exe 多语言版;
•多种字典文件格式,二进制格式可以保护你的字典不被人利用;
•强大的 DDManager,能很好的管理你字典和处理编码转换;

Acro Multi Language 为一组多国语言的 eBusiness 整合方案套件,藉由资料字典之设定,使用者可以轻易地建立多语言的操作环境,满足多国企业(Multi-National Enterprise)人机介面的需求。反之于传统的资讯运作环境下,更改操作介面的语言通常需要以 Hard Code(也就是修改应用程式)的方式,此一作业方式既繁复且不合实务。
本多语言套件采用 Mediator Pattern(中介者模式)设计,让你无限自由的扩充对任意第3方元件的支持。它预先注册了 Delphi 标准元件的替换函数,如 TCustomControl,TMenu 等,你可以很方便的注册第3方元件的替换函数,如 fastReport,devexpress,teechart 等。
使用资料字典管理工具(Data Dictionary Manager)可集中管理不同国家的语言,并与你的 delphi 专案双向互动,帮你快速建立字典。
...全文
153 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星牛 2020-06-30
  • 打赏
  • 举报
回复
版本更新历史:
引用
2020/5/16, 6.0.4 1、修改acroMultiResource.pas,在64bit下用uniGUI开发isapi时,可能出现的av错误。 2、修改acroMultiLib.pas,增加函数:MultiHook(AProc:TGetDDAndLCIDProc),即提供动态的DD和LCID,在uniGUI开发的后台, 需要根据前端browser设定的语言来动态改变,如:uniGUIApplication.UniSession.LanguageCountry。 3、增加acroCulture_Browser.pas,处理浏览器的语言Tag与LCID的映射关系。 ------------------------------------------------------------------------------------------------------------------------------- 2019/11/1, 6.0.2 1、为了避免本元件使用到的第三方模组DDetours与用户使用的版本冲突,把DDetours的文件名加以前缀acro*.pas ------------------------------------------------------------------------------------------------------------------------------- 2019/3/16, 6.0.1 1、支持Delphi 10.3 rio版本 2、支持64bit ------------------------------------------------------------------------------------------------------------------------------- 2014/1/26, 5.1.15 1、TacroMultiCustomDD增加DDKeyCodePage属性,预设是1252(英文)。修正:当Form设计时使用非英文字串做DDKey时,如果字典中没有对应翻译条目, 当把DDKey转码成Ansi或Unicode时,需要指定使用哪个CodePage,否则可能出现乱码。 ------------------------------------------------------------------------------------------------------------------------------- 2013/11/16, 5.1.15 1、支持DelphiXE5 ------------------------------------------------------------------------------------------------------------------------------- 2013/01/13, 4.1.15 1、修正,在delphi xe3下TRadioGroup和TDBRadioGroup里面的项目没有翻译 2012/09/16, 4.1.15 1、修改MultiClass_dxbar.pas的Proc_TdxBarCustomCombo函数,如果设计时ItemIndex>0,翻译后可能ItemIndex=-1,就是预选项丢失。 2012/05/05, 4.1.15 ------------------------------------------------------------------------------------------------------------------------------- 1、把acroMultiReplacer.pas的HookMM和UnHookMM函数在interface区段宣告,使有特殊需要的用户(如为了效率)可以调用; 2、TCustomMultiDD增加SaveToFile函数,可以把即时增加到Hash表中的字典保存到文件。 2012/01/29, 4.1.14 ------------------------------------------------------------------------------------------------------------------------------- 1、修改,字典中的语言标识,从CodePage改为LCID。需要注意TacroMultiDDEvents的OnBeforeReplaceComponent等事件, 其参数不同了,需要重新产生,否则运行起来可能出现AV错误。 2、支持Delphi XE2(vcl,fmx,fmi三种框架) 3、DDManager增加从Excel文件汇入的功能。 2011/03/20, 4.0.13 ------------------------------------------------------------------------------------------------------------------------------- 1、修正,在acroMultiLangDelphiIDE150.dpk中,不能翻译THistoryPropComboBox类的两个元件,否则,Delphi XE启动时,会出现AV错误。 2010/11/21, 4.0.12 ------------------------------------------------------------------------------------------------------------------------------- 1、修改,acroMultiScreen的Hook方式,如果Build with RunTime Package,就使用另一种Hook方式,某些情况下可以大幅提高效率,并避免闪烁; 2、去掉一些编译时的无关紧要的warning提示; 3、修正,TComboBox.Sorted为true时,可能导致ItemIndex指向的字串不是翻译前的字串; 4、修正,TcxComboBox.Sorted为true时,可能导致Properties.Items里面的字串没有全部翻译,同时可能导致ItemIndex指向的字串不是翻译前的字串; 5、修改,MultiClassMethod_cxExtEditors.pas,增加注册TcxListBox和TcxCustomCheckComboBox的替换函数 2010/10/11, 4.0.11 ------------------------------------------------------------------------------------------------------------------------------- 1、增加acroMultiLib.pas,封装了几个函数在里面 2、增加对Delphi XE的支持。 3、按命名惯例,把Acro改为acro 4、修正,在ocx元件中可能不能翻译资源字串的问题; 5、修正,当反复创建释放Form时,可能出现某些元件不会被翻译的问题; 6、修正DDManager,在cell中输入空白的DDKey后,离开该行,然后再也不能修改该行的DDKey,也不能取消,只能强制退出的问题。 7、为了尽量不引入不需要的元件,devexpress元件的支持函数分解到多个pas和dpk中。 8、增加了几个flash演示影片 2010/06/15, 4.0.10 ------------------------------------------------------------------------------------------------------------------------------- 1、在IDataLocate接口增加DoBeforeReplaceComponent和DoAfterReplaceComponent函数,这样Class的ReplaceMethod就可以在替换 集合元件时触发事件,让用户有机会决定是否替换其中的子元件,如TdxBarManager 2、在TAcroMultiResourceRepository增加函数: function GetDisplayValue(ADDKeyRec:PResourceStringRec):string; function GetDisplayValueAnsi(ADDKeyRec:PResStringRec):ansistring;overload; function GetDisplayValueUnicode(ADDKeyRec:PResStringRec):WideString;overload; 从原始ResourceString中获得翻译结果 3、在TMultiClassMethodStorage增加函数: procedure RegisterClassMethod(AClass:TClass;AMethod:TMultiLanguageReplaceProc; ABeginUpdateProc:TMultiLanguageBeginUpdateProc; AEndUpdateProc:TMultiLanguageEndUpdateProc);overload;virtual; 在TAcroMultiScreen替换Form时,会调用每个元件注册的BeginUpdatePro和EndUpdateProc,这样可以很好的控制效率, 特别是cxTreeList/cxGrid元件,因为替换Column的Properties时也可能引起cxTreeList/cxGrid反复Repaint 2010/02/27, 4.0.9 ------------------------------------------------------------------------------------------------------------------------------- 1、修正:在调用RegisterClassMethod注册替换函数时可能出现索引超界错误 2、修正:AcroMultiDBClassMethod.pas的注册函数没有更新,使得及时切换语言时,TDBGrid等元件不能切换语言 3、修正:把TAcroMultiStreamDD元件的元件编辑器3个菜单字串资源化,这样在IDE中就可以被AcroMultilangDelphiIDE140.dpk翻译 4、增加:每个元件的元件编辑器上增加版本显示菜单 5、修改,修改AcroMultilangDelphiIDE140.dpk,剔除一些不能翻译的元件和资源字串,避免IDE出现AV错误。 2009/10/31, 4.0.8 ------------------------------------------------------------------------------------------------------------------------------- 1、在TAcroMultiDDStorage元件增加CollectionComponentDDKey函数,用来提取某个画面的DDKey列表。 2、在delphi2010启动时,增加元件logo显示 2009/09/05, 4.0.7.2147 ------------------------------------------------------------------------------------------------------------------------------- 1、TAcroMultiResource增加对Twindows98的支持。 2、把Delphi标准的元件替换函数从AcroMultiClassMethod.pas分离到AcroDelphiClassMethod.pas 3、增加TAcroMultiDDKeyCatcher元件,用来在运行时把那些没有翻译的字串写到文件, 即提取DDKey来准备翻译。 4、增加AcroMultilangDelphiIDE120.dpk来翻译delphi IDE本身。安装后,在Desktop toolbar会有一个语言下来框来切换语言。 dpk本身包含了中文繁简体,英文语言,如果你有更好的翻译,可以把\DelphiIDELng\DelphiIDE.lng文件复制到delphi得bin目录下, 语言下拉框的语言数目由lng决定。 2009/08/05, 4.0.6.2146 ------------------------------------------------------------------------------------------------------------------------------- 1、修正,在Windows2000系统,会出现“can`t hook!”错误。 2009/07/25, 4.0.5.2145 ------------------------------------------------------------------------------------------------------------------------------- 1、修正,在Delphi2009编译后,如果在繁体或英文操作系统运行,会出现“can`t hook!”错误。 2、修改,DDManager编辑时都采用unicode,如果保存到ansi文件时才转换,从ansi文件读取时也转换。 不再采用编辑时把unicode转成ansi来处理的方式。 2009/04/26, 4.0.4.2144 ------------------------------------------------------------------------------------------------------------------------------- 1、在TrapAPI.pas增加PatchAPI和UnPatchAPI这两个API Hook函数,它们是线程安全的, TAcroMultiResourceStorage使用这两个函数来翻译ResourceString,修正多线程出现的AV错误; 2、修正即时翻译的一个bug,由于检查元件重复翻译的部分列表排序错误,即时切换语言后, 在翻译新创建的窗体时,其上的某些元件可能被判为已经翻译过儿不会被翻译。 3、修正DDManager,在从dfm/nfm抓取字串时,会漏掉相邻的一个字符串 4、Demo里面增加了一个拼图游戏和一个局域网五子棋游戏 2009/03/29, 4.0.4.2143 ------------------------------------------------------------------------------------------------------------------------------- 1、TrapAPI.pas在Trap/UnTrap时增加CriticalSection保护,避免多线程时出现线程冲突; 2009/03/25, 4.0.4.2142 ------------------------------------------------------------------------------------------------------------------------------- 1、修正TAcroMultiReplacer的UnReplaceComs设置被忽略的问题; 2、DDManager补上“工具”工具栏,即原来的“文件ansi/unicode繁简转化”、“数据库繁简体转化” 2009/02/21, 4.0.3.2141 ------------------------------------------------------------------------------------------------------------------------------- 1、修正:即时切换语言时,对非TComponent元件查找旧的DDKey时可能找到错误的DDKey, 从而导致翻译错位 2、DDManager修正:字典文件从windows档案管理员拖入DDManager时,可能出现AV错误。 2009/02/14, 4.0.2.2140 ------------------------------------------------------------------------------------------------------------------------------- 1、支持即时更换语言,不再需要重新建立Form才能切换语言 2、DDManager修正:错误提示“DDKey重复”;工具栏增加切换语言的列表框 2008/12/26, 4.0.1.2138 ------------------------------------------------------------------------------------------------------------------------------- 1.增加支持到Delphi2009 2.DDManager用Delphi2009编译,全面支持unicode;提高新节点创建速度,重复原语检查速度。 使用TRibbon元件做工具栏。 2008/07/03, 3.5.2.2023 ------------------------------------------------------------------------------------------------------------------------------- 1、TAcroMultiDD增加IsUnicode属性,让用户标记这个字典是否是unicode的,便于给tnt元件使用时, 如果发现是Ansi就可以转成Unicode; 2、IDataLocate接口增加两个函数以明确获得ansi和unicode function GetDisplayValueAnsi(ADDKey,ACodePage,ASeqNo:string):string; function GetDisplayValueUnicode(ADDKey,ACodePage,ASeqNo:string):WideString; 3、TAcroMultiDDStorage增加ReplacedObjectList来避免重复替换元件 2007/1/5, 3.5.1.1302 ------------------------------------------------------------------------------------------------------------------------------- 1、修改了AcroMultiClassMethod.pas的一個筆誤,這導致註冊的元件的父子關係錯誤; P:=Parent.Son; while P<>nil do begin Next:=P.Brother; if P.InheritsFrom(AClass) then //修改為if P.MLClass.InheritsFrom(AClass) then begin 2006/11/07, 3.4.26.1258 ------------------------------------------------------------------------------------------------------------------------------- 1、增加TAcroMultiDDEvents元件,讓用戶更精確知道哪些元件真正被替換了; 2、修改AcrMultiScree.pas的Acroprise_ShowWindow函數,訪問Screen.Forms[i].Handle時, 一定要檢查Screen.Forms[i].HandleAllocated,否則可能出現嚴重問題。 2006/10/29, 3.4.25.1145 ------------------------------------------------------------------------------------------------------------------------------- 1.修改所有TCollectionItem的AssignTo函数错误,不能调用inherited; 2.修改TacroScreenEvents一个bug; 2.增加Unicode支持; 2006/10/28, 3.4.24.1087 -----------------------------------------------------------------------------------------------------------------------

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧