線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2737
推到 Plurk!
推到 Facebook!

要如何知道一套軟體原先使用什麼辦法做到多國語言?

答題得分者是:暗黑破壞神
lily720616
一般會員


發表:16
回覆:18
積分:6
註冊:2006-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-10 10:50:39 IP:60.249.xxx.xxx 訂閱
請教一下

我手上有一支程式
有英文繁體與簡體三種語系
會依照電腦作業系統的語系選擇軟體SHOW的語言

通常在修改的時候,我都是用Project -> Languages來做修改
後來我發現
他有一個資料夾裡面
分別有三種語系的全部翻譯資料一共有七個檔案(三個.TXT檔、三個.fls檔、跟一個.ABC檔)
TXT檔的格式如下:(分別有A(繁體)、B(簡體)、C(英文)三個檔案)
# 繁體中文
新細明體
細明體
CHINESEBIG5_CHARSET
# D:\cht\A.dfm
(繁體簡體或英文檔的路徑)
'管理'
'選擇'
'取消'
# D:\cht\B.dfm
(繁體簡體或英文檔的路徑)
'設定'


fls檔的內容如下:(分別有A(繁體)、B(簡體)、C(英文)三個檔案)

# D:\dfm_str.ABC
D:\cht\A.dfm
D:\cht\B.dfm


最後一個.ABC檔的內容是
[Str]
ABCFiles=""dfm_A.txt","dfm_B.txt","dfm_C.txt""

請問有人知道為什麼要這樣做嗎?
這樣的方式可以達到實現多國語言嗎?
看了很久~只覺得這三者之間都有相關、卻不知道是如何做運用的
設了關鍵字在程式碼裡查也查不出個所以然來
麻煩知道怎麼使用的人幫幫忙

另外
因為有的時候可能要在新增其他的語言
每一個都要在project Manager 裡一個一個KEY實在太耗時間了
想問
像這樣已經完成好的程式要在新增新的語言
用所謂的.INI方式可以做到嗎、容易做到嗎?
看到許多人好像都建議用這個方式
已經搞的有點混亂了><
還麻煩大家給個方向謝謝!!

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-10 11:24:34 IP:210.241.xxx.xxx 訂閱
>這樣的方式可以達到實現多國語言嗎?
為何不可

>請問有人知道為什麼要這樣做嗎?
有些人用的是自己想出來的方式, 看得懂就參考, 看不懂就放棄, 不必鑽牛角尖

>用所謂的.INI方式可以做到嗎、容易做到嗎?
可以, 容易與否見人見智

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
lily720616
一般會員


發表:16
回覆:18
積分:6
註冊:2006-08-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-10 13:35:30 IP:60.249.xxx.xxx 訂閱

===================引 用 文 章===================
>這樣的方式可以達到實現多國語言嗎?
為何不可

>請問有人知道為什麼要這樣做嗎?
有些人用的是自己想出來的方式, 看得懂就參考, 看不懂就放棄, 不必鑽牛角尖

>用所謂的.INI方式可以做到嗎、容易做到嗎?
可以, 容易與否見人見智

謝謝您的回覆
就是因為自己學的時間短懂得不夠多
所以才來這裡尋求幫助

可能我的問號打的不好
但是我最主要不是想知道可不可以
而是想知道是不是有人知道這是利用什麼方式做到的
既然前一個設計的人有這樣的IDEA~相信也有其他人會有類似的想法才對
另外INI的方式是想要知道~
如果原本的程式架構蠻大
要把它整個改用INI的方式是否一定程度的困難或阻礙
看的懂就參考看不懂就放棄,那似乎就不需要討論區的存在了?

只是覺得不會的東西想說問問大家或許會有不同的想法
卻被抓了幾句話賭了回來,是表達方式不好的錯還是問問題有錯ㄋ?
努力的想學習卻看到這樣的答案實在有點酸



態度不佳還請包函~只是說出自己的想法

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-10 14:13:36 IP:210.241.xxx.xxx 訂閱
小弟並沒有惡意, 只是就事論事, 令您感到不舒服, 在此說聲抱歉
> 看的懂就參考看不懂就放棄,那似乎就不需要討論區的存在了?
這要看討論的是什麼問題
之前也有人上傳了一堆 binary data 問大家格式是什麼 ? 
結果是無人能答出格式, 也沒人願意去分析, 或能分析
如果是比較常見的 .jpg , gif,... 格式的討論, 這種比較有意義點
針對某軟體特別格式的資料, 在沒有 source code 的情況
或沒有該格式解說文件的情況下, 去稍微研究參考一下格式無妨
但是硬要分析出對方格式或做法, 感覺不是很合適
.ABC 應該是一個語系檔案索引, 可以方便添加另一種語言
.txt 是各語系的純文字檔案, 用於顯示訊息
.dfm 猜可能下拉選單, 或一些元件上的各國文字
其實可以將各語系 ini 檔案放在 Language 目錄, 搜尋目錄有幾個檔案就知道有哪幾種語系可以切換
.ABC 和 .dfm 都省略了, 資料全部存在 .ini 中
甚至多語系的文字也可以直接寫死在程式中, 單一檔案攜帶使用比較方便
>如果原本的程式架構蠻大
>要把它整個改用INI的方式是否一定程度的困難或阻礙
基本上小弟覺得不難, 特別寫個副程式去處理所有的顯示即可
.ini 存的是 純文字
如果有關文字的顯示都是純文字, 那應該還好處理
如果是圖片文字, 比較麻煩, 但是仍可在 ini 中用變數指定載入不同的圖片
 
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-10 16:05:11 IP:61.64.xxx.xxx 訂閱
那就容我來簡單說明一下吧
多國語言,有很多種實作方式
看各人喜好,但有必要想得這麼複雜嗎?
也許我是個呆子,但我喜歡這樣想 ---> 不過是將中文換英文,英文換日文,換顯示文字而已麼
跟你將 Labe.Caption := "我是說明" ,換成 Labe.Caption := "說明看這裡"
有何不同呢?即使是同樣的語系
更簡單的看,就是將該記憶體空間所記錄的值,換成別的數值而已麼

所以多國語言,只要達到這個目的的作法都可以

不過,實作上,方不方便,就是很重要的了
都放在 ini ,也是可行,但是,要是你有上萬的元件的大型專案,你寫程式,會寫到死,除錯,或做到死,換到的是,集中翻譯與管理的好處
值不值得?我是不知道

但 Deplhi 內建的機制,為何不用呢?難道這種大公司的東西,會沒經過考驗,隨便就做做上市了嗎?

在而言,目前大部分都是利用 resource 的機制,可以放在程式本身,或是集成 resource DLL 來,為什麼呢

總歸一句,呆子作法 The simplest, The best

所以 Delphi 內建的,已經幾乎很完美了,雖然還有一點小區點,最近讓我很不爽,都做地幾乎完美了,為何不把東西做完,留下來讓我傷腦筋

所以,你可以直接使用內建的機制,他可以讓你看翻譯後的結果,彈性也很大,不只翻譯文字,還可以讓你依據語言,調整元件的位置,使否顯示,是否啟用,元件的大小,等等,所以,比其只能換文字的機制而言,是強大許多,是一項很先進的設計

Delphi 在設計上,不知比 M$ 的進步多少,就算你不懂,也不要小看 Delphi
而且他還可以幫你自動翻譯,統一用法,會比你自己用 ini 一再翻譯重複的東西來得方便,專案小,看不出差別,專案大,你就會感受到 Delphi 的威力

TXT, fls 我是沒看過,不過也不難知道,只是放文字,然後「手動」讀進來
不過 DFM ,你沒有道理不知道是什麼
這就是 Form 的定義檔,你設計時,所有屬性的設定都會儲存到這裡,你不要說你沒看過,除非你是新手

所以一個呆子的想法,「重新載入 dfm 不就得了?」

是的這正是你貼出來的東西的作法,不過他不是依循 delphi 的方式而已
如果是 Delphi 只會有 *.dfm 這個檔用來處理 From 與另一個 *.rc 用來處理 resourcestring
只要你不在程式內寫死,使用 resourcestring 與屬性設定,就可以 100% 自動化的轉換語言,不需超過 30 行的程式,不需管用了多少元件
少下可觀的時間

所以用 Delphi 內建的吧,花時間去學,學完後,程式翻譯的時間會便少很多,值得
至於其他方式,看不懂就算了,除非你只是時間多,要專研各家作法,最後得出 Delphi 比較好的理論,那我也不反對,你爽最重要


你可以是是看,設計 10 個 Form,然後開啟時 使用 MDI 方式,每個 Form 都放個 200 種會顯示文字的物件
*** 更重要的有的物件也會於執行時期換文字 ***
這樣,你來「手動」轉換看看

然後,你再來用 Delphi 內建的機制,就會瞭解

不需多寫程式,不用去搜尋語系檔,不用手動一個一個翻譯,不用擔心相同句子翻譯不同
還可以,翻譯時動態變更元件位置、大小、顯示與否

這麼強大的功能,想法卻很簡單,跟呆子一樣,確實讓人佩服

最後多國語言,作法的順序也是很重要,這樣才會省時間

1. 用英文設計
2. 設計時預留一個適當大小,以變換語系後可以正確顯示,不過這樣不是必須,因為 Delphi 可以語系檔變換大小與位置
3. *** 很重要,全部做完後,才使用語系功能,一定要遵守,才會省時間 ***

如果你要想瞭解為什麼,那請先學好 delphi 內建的方式 (使用方式即可),這樣再來討論,才有共同的基礎,不會說了你也不懂

最後--> 每一個都要在project Manager 裡一個一個KEY實在太耗時間了
當然要一個一個 Key ,不然你找別人 Key
重點:Delphi 相同東西只需要你 Key 一次

在補充一下 Delphi 的機制,還可以讓你換圖案,不只是文字,但是他沒做出使用介面,這讓人不爽,東西做很好,但只有 90% 的功能,就好像法拉力跑車,少裝了風動裝置,爽度就是少了一點
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-11 01:23:14 IP:220.131.xxx.xxx 未訂閱
這個就是資料結構的問題嘛。
你想想。你會出現在你的專案(程式)中有那些字,詞?
我們想像一下,就像公因數一樣。把它們提出去。
也就是說,你所用到的字串,全部都是由外面讀進來的。
第一行是 fom1 的 caption.
第二行是它的 form1.button 的 caption....之類的動作。
一直下去。連你要 showmessage 都是這樣讀進來。
完全依照一個順序來處理。

那你要換語言檔時,是不是只要把這個檔翻譯成另一個語言就好了?

再來,當你有兩個、三個、四個語言時。
你又把所有這個檔名都聚起來。
變成
中文:file1
英文:file2
韓文:file3
......etc
這樣子,你又可以用一個 list 來讓USER選擇後依選擇的順序去 load file
然後就做到所謂的多語系了呀。

參考一下資料結構,對你這個問題會有幫助。
system72
中階會員


發表:15
回覆:114
積分:55
註冊:2005-08-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-28 21:08:03 IP:219.81.xxx.xxx 訂閱
這應該是用 3rd 的元件方案,

以前我在書店,有本Delphi的書有夾一張廣告紙,

那是中文介紹的,但年代有點久遠,好像是Delphi 2-3 左右的書,


就是在介紹 一個 For Delphi/BCB 的 多國語言的產品.

它可以:

1. 讀取 delphi 的 dfm 文字到他的編輯器,
2. 讀取 .exe 的 dfm 的文字到他的編輯器.(映象有)


然後,
在他的編輯器上修改多國語言,存到不同目錄.

只要你有安裝它的元件,程式啟動時,選擇目錄,就幫你載入該語言. (也可以中途變換)



因為它是存類似 for .dfm 的格式,
所以在他的編輯器上就可以直接設定,修改,元件的位置或其他屬性等,而不止是文字而已.




好處是,多國語言的工作,可以更容易分割,
不需要修改程式,也不需要重新compiler.

即時是要改元件的位置,也不用重新編譯程式.




我想你到 delphi super page
http://www.torry.net/ 應該都可以找到很多這方面solution 的套件.

因為我看英文也不快,就麻煩妳自己,或有興趣的人去找找看.

(如果要說有什麼缺點,那大概就是1.要另外花$$ .2.工程師可能會提早失業 :p)




用 ini 檔,來處理多國語言,
則是不花錢的前提下(有免費的元件),
容易實作,普遍,也有彈性的方式. ( 好處是不用重新編譯程式.)



編輯記錄
system72 重新編輯於 2007-04-28 21:17:32, 註解 無‧
system72 重新編輯於 2007-04-28 21:22:02, 註解 無‧
system72 重新編輯於 2007-04-28 21:24:11, 註解 無‧
system72 重新編輯於 2007-04-28 21:28:28, 註解 無‧
系統時間:2024-05-16 16:57:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!