一組很方便實作多語言的元件。
資料字典提供原語與多國文字的映射,多語言套件在程式運行時從檔案,資料庫,或 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 專案雙向互動,幫你快速建立字典。
uj5u.com熱心網友回復:
版本更新歷史:
參考 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
-----------------------------------------------------------------------------------------------------------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9588.html
標籤:VCL組件開發及應用
上一篇:請問unigui里的UniDBGrid重繪沒有效果
下一篇:求推薦,DELPHI7開發的結構化電子病歷控制元件