代码之家  ›  专栏  ›  技术社区  ›  David Thornley

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

  •  2
  • David Thornley  · 技术社区  · 15 年前

    我正在尝试本地化一个大型MFC项目,其中所有字符串都硬编码到源代码中。(这是当时最容易做的事情,早在我们还没有想到要扩展到其他市场之前)我看过本地化工具,它们总是说要先将所有字符串放入.rc文件,或者假设已经完成了。在我检查过的那些代码中,AppTranslator是唯一一个甚至暗示它可能是一个问题的代码,它提供了一些方便的函数来减少产生的源代码的冗长。

    有没有人比手动浏览成百上千个文件并在过程中偶尔犯错误有更好的想法?

    有什么产品可以帮忙吗?

    有人有做这件事的经验吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Tim    15 年前

    当然,这是一个乏味的过程。很多年前我参加过这样的努力。我们是手工做的。您可能可以编写一些普通的代码,使加载、检查等都非常干净,并且只需要最小的膨胀。

    我不知道有什么产品能为你做这件事。

    CString可能是您的朋友-使用loadstring()成员。

    我要么从cstring派生,要么编写一些其他的代码来封装默认值(可能是它们当前的硬编码值)和其他错误条件,然后使用这些代码来代替硬编码字符串。

    如果您不喜欢使用CString,那么从std::string派生并使用global 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/名称的行号和文件名。

        2
  •  2
  •   Martin Beckett    15 年前

    我知道现在太迟了,但对搜索引擎来说。
    CString有一个特性,可以从资源ID初始化它。

    CString((LPCTSTR)IDS_RESOURCE_ID)