如何将字符串放入MFC中的字符串表中?

问题描述:

我想本地化一个大型的MFC项目,其中所有的字符串都被硬编码到源代码中。 (这是当时最容易做的事,在我们有任何想法的情况下我们会扩展到其他市场。)我研究过本地化工具,他们总是说要先把所有的字符串放到.rc文件中,或者只是假定它已经完成。在我查过的那些中,appTranslator是唯一一个提示它的人可能会遇到的问题,并提供了一些便利功能来减少源代码的单词性。如何将字符串放入MFC中的字符串表中?

有没有人比手动处理数百个文件有更好的想法,并且一路上偶尔会出现错误?

有某种产品可以帮助吗?

有没有人有这样做的经验?

这是一个乏味的过程,以确保。多年前我参与了这样的努力。我们手动完成。你可以写一些通用的代码,使得加载,检查等都非常干净,并且膨胀很小。

我不知道任何产品会为您做。

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

我知道它也是如此晚,但只是为搜索引擎。
有从资源ID初始化它的CString的一个特征。

CString((LPCTSTR)IDS_RESOURCE_ID)