2009-04-10 181 views
2

我想本地化一個大型的MFC項目,其中所有的字符串都被硬編碼到源代碼中。 (這是當時最容易做的事,在我們有任何想法的情況下我們會擴展到其他市場。)我研究過本地化工具,他們總是說要先把所有的字符串放到.rc文件中,或者只是假定它已經完成。在我查過的那些中,appTranslator是唯一一個提示它的人可能會遇到的問題,並提供了一些便利功能來減少源代碼的單詞性。如何將字符串放入MFC中的字符串表中?

有沒有人比手動處理數百個文件有更好的想法,並且一路上偶爾會出現錯誤?

有某種產品可以幫助嗎?

有沒有人有這樣做的經驗?

回答

2

這是一個乏味的過程,以確保。多年前我參與了這樣的努力。我們手動完成。你可以寫一些通用的代碼,使得加載,檢查等都非常乾淨,並且膨脹很小。

我不知道任何產品會爲您做。

CStrings可能是你的朋友 - 使用LoadString()成員。

我會從CString派生或編寫一些其他代碼來封裝默認值(它們當前的硬編碼值可能)和其他錯誤條件,然後用它代替硬編碼的字符串。

如果您不想使用CString,那麼從std :: string派生並使用全局LoadString()也可以正常工作。

爲工具: 不知道他們會爲你的工作情況: http://www.modelmakertools.com/articles/hard-coded-strings.html

顯然這個工具可以找到所有的字符串中的exe文件: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 然後你就可以搜索他們和替換。

我認爲編寫一個工具會非常簡單 - 查找「字符,然後在一個與它來自的.cpp或.h文件相對應的rc文件中創建一個條目,您將需要大量的選擇,但它是一個開始,你可以替換文本,或插入註釋等。你可以在#include中使用行號和文件名作爲資源ID /名稱。

+0

謝謝,雖然你提到的工具看起來不像他們會做我所需要的。我可能會在幾天內用Perl寫一些東西,但認爲購買工具會更便宜,更簡單,更可靠。 – 2009-04-10 17:21:31

+0

如果是我,我只想把一個工具列出在一個文件中的所有字符串,以及行號等,然後手動完成剩下的工作。在我看來,拋光它一次性使用收益遞減。我不羨慕你的任務...祝你好運 – Tim 2009-04-10 17:43:05

2

我知道它也是如此晚,但只是爲搜索引擎。
有從資源ID初始化它的CString的一個特徵。

CString((LPCTSTR)IDS_RESOURCE_ID) 
相關問題