如何本地化Delphi對話方塊內部的字串?

2021-10-23 20:54:39 字數 1323 閱讀 9824

我們使用delphi開發的程式,會用到一些delphi內部的資源,例如對話方塊、控制項等,這些控制項上的文字一般都是英文的。另外一些執行時錯誤也是以英文的方式報告出來的。

這些字串能否翻譯成中文顯示呢?

當然是可以的,方法也很簡單。

首先找到包含這些字串的單元,例如consts, rtlconsts等。

sdlgwarning: string = 『警告『;

sdlgerror: string = 『錯誤『;

sdlginformation: string = 『資訊『;

sdlgconfirm: string = 『確認『;

sdlgyes: string = 『是(&y)』;

sdlgno: string = 『否(&n)』;

sdlgok: string = 『確定(&o)』;

sdlgcancel: string = 『取消(&c)』;

sdlgabort: string = 『放棄(&a)』;

sdlgretry: string = 『重試(&r)』;

sdlgignore: string = 『忽略(&i)』;

sdlgall: string = 『全部(&a)』;

sdlgnotoall: string = 『全否(&o)』;

sdlgyestoall: string = 『全是(&a)』;

sdlgclose: string = 『關閉(&c)』;

分別對應了consts中smsgdlgwarning等。然後在loadlocaleresource中和其它字串一樣載入他們的本地化翻譯。

然後通過fslib.changeresstring()就可以改變delphi內部的字串成翻譯後的樣子,例如:

changeresstring(@consts.smsgdlgwarning, pchar(sdlgwarning));

前面乙個引數是delphi原來的字串名字前面加乙個@,後面乙個就是翻譯後的字串。

無論本地化翻譯是否載入都可以呼叫changeresstring來改變delphi內部的字串。

*請注意*這個方法只對宣告為resourcestring的字串才有用,如果是宣告為var或者const都不起作用。

看一下效果:

changeresstring(@rtlconsts.slistindexerror, 『下標%d越界啦』);

資料本地化儲存 如何選擇

巨集定義,直接根據檔名稱,拼接檔案的絕對路徑,pragma mark 寫入檔案 ibaction writtofile id sender pragma mark 讀取內容,讀取字串的內容 ibaction readfromfile id sender pragma mark 寫入檔案 ibacti...

如何做本地化測試

一 什麼是本地化測試 當今的軟體發布到世界不同的國家和地區,使軟體適應該國家或地區特定的語言 地區習俗和文化的過程成為本地化,這類的測試就稱為本地化測試 二 本地化測試包括哪些內容 1 翻譯 這是最基本的內容,首先檢查軟體中顯示的文字 幫助文件的內容等等是否翻譯成當地的語言,並且能夠被讀懂。這並不是...

原創 如何資源本地化DevExpress

使應用程式支援各種語言本地化,可以使你的應用程式支援面對各個國家使用者的版本的語言。下面以xtraeditors 為例子進行資源本地化。你需要哪種語言版本的應用程式,你就需要建立哪種語言的assembly,其中包含該語言的本地資源。sdk提供了本地化工具winres.exe。工具的具體使用,參見sd...