我正在尝试本地化一个大型MFC项目,其中所有字符串都被硬编码到源代码中。 (这是当时最简单的事情,在我们知道我们会扩展到其他市场之前。)我已经看过本地化工具了,他们总是说要把所有字符串放到.rc文件中,或者只是假设它已经完成。在我检查的那些中,appTranslator是唯一一个甚至暗示它可能是一个问题的人,并提供了一些便利功能来减少结果源代码的冗长。
有没有人比手动浏览数百个文件有更好的想法,并且偶尔会犯错误?
是否有某种产品可供帮助?
有没有人有这方面的经验?
答案 0 :(得分: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 然后你可以搜索并替换它们。
我认为编写一个工具会相当简单 - 查找“字符然后在rc文件中创建一个与它来自的.cpp或.h文件相对应的条目。你将需要进行大量的剔除,但这是一个开始。您可以替换文本,或插入注释等。您可以在#include中使用资源ID /名称的行号和文件名。
答案 1 :(得分:2)
我知道现在为时已晚,但仅限于搜索引擎 CString有一个功能,可以从资源ID初始化它。
CString((LPCTSTR)IDS_RESOURCE_ID)