全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8066
推到 Plurk!
推到 Facebook!

如何寫多國語言程式

 
verbose
一般會員


發表:9
回覆:5
積分:2
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-20 12:48:56 IP:203.204.xxx.xxx 未訂閱
請問有人寫過多國語言程式嗎? 在Delphi上用 Resource DLL Wizard, 要如何才能修改我在程式中宣告 ResourceString 的文字?
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-28 21:21:40 IP:61.219.xxx.xxx 未訂閱
引言: 請問有人寫過多國語言程式嗎? 在Delphi上用 Resource DLL Wizard, 要如何才能修改我在程式中宣告 ResourceString 的文字?
站長補貼被駭前ccchen會員回覆內容: 主要關鍵在於使所有之Resource String成為獨立之DLL 1. 建立 .rc檔, .rc為純文字檔,詳細說明可看MSDN文件, 以下則為單純String Table之例 --------------xxx.rc----------------------------- STRINGTABLE { 43701, "&D資料連接設定" //Data Setting 43702, "&E匯出" //"&Export" 43703, "&E匯出至檔案" //"&Export To File" 43704, "&F檔案" //"&File" 43705, "&I匯入" // "&Import" 43706, "&I由檔案匯入" // "&Import From File" 43707, "&M合併" //"&Merge" 43708, "&N新增" //"&New" } --------------end of xxx.rc----------------------------- 2. 建立產生Resource之Project 於Delphi中new 一個DLL, 把所有之 .rc檔加入 Build可產生DLL 3. 程式中可用LoadLibrary或LoadLibraryEx載入此模組 用Loadstr載入指定之字串 [NOTE]只要更新Resource之DLL即可使用不同之Language 4. dll可Rename成不同之延伸檔名, 如.cht,.eng,.dft等, 因此程式中也可預留參數設定於RunTime切換 5. Release後可提供客戶Bat檔,於修改.rc後直接建立dll brc32 -r xxx.rc 將.rc檔編譯成 .res dcc32 xxx.dpr 將含.res之project build成 .dll(或指定延伸檔名) [note]於.dpr中加上如 {$E cst} 之option可使output之延伸檔名為 .cst ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-05-29 08:40:07 IP:163.29.xxx.xxx 未訂閱
補充說明: 直接使用Delphi之ResourceString亦可, 步驟大致如前(依不同Language建立DLL,程式中載入模組,每一字串依ID載入). 差別在使用.pas檔必須有Delphi來進行Compiler. 而.rc則可用Microsoft之Resource Compiler,故若須預留客戶修改之空間應用 .rc彈性較大. 若自行完成所有需要之Language, 則直接使用.pas可能環境較熟
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-17 01:54:00 IP:61.59.xxx.xxx 未訂閱
我覺得用Resource 也是有一些些缺點,我的方法是比較土法練鋼的啦… 在任何程式語言都適用 例如要做簡、繁、英…等語言的程式版本,繁體中文與英文倒還好 但是若是在繁體中文的os去編譯用Word翻譯成簡體並存在GB碼的.RC檔時 拿到簡體環境測試,就會發現根本還是亂碼,只有在簡體的環境下編譯.RC檔 才會正常的顯示簡體中文,我不太明白是何故,我原是在用一個RC檔裡,利用Index去區分語系,可能是編譯RC時會去參考國碼吧 不過後來我改用TXT File來實現多國語言的功能 編輯一個文字檔,例如Chinese.Lng ;語系:繁體中文 ;版本 1.0 LID_Label_Start=開始 LID_Form_Caption=人事系統 v1.0 只要再編輯英語的,簡體的用Word轉換 其它國家的語系,用英語的傳播,要不要去翻譯…他們自己想辦法…:p (省去自己要去翻譯其它國家的語系…日、法、俄、義…嚇…八國聯軍…) 然後寫一個開啟文字檔的Function,LoadString 用法… Self.Caption:=LoadString(LID_Form_Caption); 即可 另主程式可設一個Language的Menu,依據程式執行路徑,找尋存在的Lng檔顯示 ,即可供使用者選取語系了 大家參考看看我的做法吧…有什麼可改進的再告訴我^^
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-07-17 12:22:29 IP:61.231.xxx.xxx 未訂閱
引言: 請問有人寫過多國語言程式嗎? 在Delphi上用 Resource DLL Wizard, 要如何才能修改我在程式中宣告 ResourceString 的文字?
可以使用讀取 INI 檔的方式輕易作出多國語言的程式。 使用 Resource DLL 的優點可能是速度會比較快,但要作多國語言轉換的人(以中文來說,就是中文化的作者)必需要有組譯器才行,如果沒有(我想大部分人是沒有),就無法作這樣的工作,即使他很想作。 使用 INI 檔的優點是,任何只要會使用文書處理器的人,只要他想作,都可以作,而且,對於別人翻譯自認不妥的部分,還可以自行修改,彈性較大。
------
http://www.ViewMove.com
umm
一般會員


發表:7
回覆:12
積分:3
註冊:2002-07-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-07-23 22:32:38 IP:61.224.xxx.xxx 未訂閱
引言: 我覺得用Resource 也是有一些些缺點,我的方法是比較土法練鋼的啦… 在任何程式語言都適用 例如要做簡、繁、英…等語言的程式版本,繁體中文與英文倒還好 但是若是在繁體中文的os去編譯用Word翻譯成簡體並存在GB碼的.RC檔時 拿到簡體環境測試,就會發現根本還是亂碼,只有在簡體的環境下編譯.RC檔 才會正常的顯示簡體中文,我不太明白是何故,我原是在用一個RC檔裡,利用Index去區分語系,可能是編譯RC時會去參考國碼吧 不過後來我改用TXT File來實現多國語言的功能 編輯一個文字檔,例如Chinese.Lng ;語系:繁體中文 ;版本 1.0 LID_Label_Start=開始 LID_Form_Caption=人事系統 v1.0 只要再編輯英語的,簡體的用Word轉換 其它國家的語系,用英語的傳播,要不要去翻譯…他們自己想辦法…:p (省去自己要去翻譯其它國家的語系…日、法、俄、義…嚇…八國聯軍…) 然後寫一個開啟文字檔的Function,LoadString 用法… Self.Caption:=LoadString(LID_Form_Caption); 即可 另主程式可設一個Language的Menu,依據程式執行路徑,找尋存在的Lng檔顯示 ,即可供使用者選取語系了 大家參考看看我的做法吧…有什麼可改進的再告訴我^^
抱歉.......小弟是Delphi新手........ 您ㄉ方法小弟粉喜歡........但是真ㄉ不太會用...... 希望大大能寫ㄍ超簡單ㄉ範例給小弟......感激不盡.......QQ ummchen@yahoo.com.tw
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-07-24 02:33:15 IP:211.74.xxx.xxx 未訂閱
我寫了一個簡單的範例,放在『會員貢獻文件檔案上傳專區』 去那Download吧,這樣有需要的人也能看到 我用TINIFile 做存取,這樣子會比較容易懂 可自行修改,用也可以用其它元件像TMemo來讀檔 或是自行開啟檔案處理皆可,彈性會比較大 有問題再來討論 噓~~~~~~沉思中…
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-08-14 22:14:18 IP:211.74.xxx.xxx 未訂閱
引言: 扂?賸珨??庰?瞰ㄛ溫婓◇T?侵恅璃n偶奻^◆ 饒Download勘ㄛ稛衶俴骳玥饑刳第傺斯穀r 扂蚚TINIFile 酕湔ㄛ稛衿掀廌⺍眢雅 褫赻俴党蜊ㄛ蚚珩褫眕蚚[坳啋璃砉TMemo繉xn 麼岆赻俴嶱n偶?燴諂褫ㄛ?俶掀廌湮 衄?觳婬?? ⺼彆揃蹋岆湔楛闚腔 筍岆OS岆?闚腔饒岆祥岆憩羶衄煇楊賸 u~~~~~~麥佷笢#
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-08-15 00:43:15 IP:61.59.xxx.xxx 未訂閱
引言: 如果資料是存繁體的 但是OS是簡體的那是不是就沒有辦法了
當然,所以要自己事先將繁體的語言檔,copy一份,用word 2000簡繁互換 另存成簡體的語言檔,在程式裡便可選擇各種語言顯示 (若系統裡裝有其它國家的語系當然可以一起顯示,否則只有正確的語系能被顯示) 噓~~~~~~沉思中…
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-08-15 14:13:54 IP:210.71.xxx.xxx 未訂閱
目前INI 檔的使用愈來愈廣,由之前的Multi Language 後 現在連很多的資料庫也利用INI檔動態產生欄位結構 ..^_^
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-08-15 14:39:26 IP:210.64.xxx.xxx 未訂閱
引言: 目前INI 檔的使用愈來愈廣,由之前的Multi Language 後 現在連很多的資料庫也利用INI檔動態產生欄位結構 ..^_^
對呀…這是好現象^^這樣子程式才能有最大的彈性 就不用為了一些小事變更程式, 程式也很容易的就能在不同的資料庫或資料庫平台上執行(資料庫連線用ini設定) 不過,我都是把它存成*.sys 放在System32裡,也可兼顧到資訊不易被亂改 這是我一點點使用的心得^^ 噓~~~~~~沉思中…
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-11-22 22:53:28 IP:61.216.xxx.xxx 未訂閱
【Delphi】【分享】利用INI文件實現界面無閃爍多語言切換 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23151
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-18 17:06:16 IP:218.1.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28843 一组很好用的多语言元件, 你只管把你的程式写成英文版,然后放上TMultiFileDD,TMultiReplacer就行了,最后用资料字典管理员建立资料,不需要编译成不同语言的exe 發表人 - mustapha.wang 於 2003/04/18 17:22:17
------
江上何人初见月,江月何年初照人
系統時間:2024-05-21 0:09:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!