3

我这里有几个大型 MFC 应用程序,将它们转换成任何其他格式是不可能的。我们正在向其他市场扩张,并希望使这些应用程序能够在其他语言和文化中运行。

到目前为止,我偶尔会找到关于如何处理 Visual C++ 版本 6 的参考资料,其中提到 MFC 的更高版本具有额外的相关功能。搜索 MSDN 为我提供了有关如何将应用程序转换为 Unicode 的说明,我们已经这样做了。我在 MSDN 上找不到任何关于如何在 Unicode 中使语言成为多语言的内容,只有一些使用 Google 的旧东西,以及一本关于使用 VC++6 国际化的书。(我们现在在 XP 和 Vista 上使用 Visual Studio 2008。)

我没有声称我的 Google-fu 的力量,并且很高兴被引导到我错过的东西。

使用VC++6的方法是否合理,还是应该使用以后的特性?

如果我应该在此之后使用功能,我在哪里可以找到对它们的参考?

除了设置语言环境、将所有字符串转换为资源以及以不同语言复制资源之外,我还有什么需要担心的吗?

我可以找到更多关于 .NET 国际化的信息,但我对 .NET 缺乏经验。我会发现哪些适用于 VC++ 和 MFC?

编辑:我在尝试将 Unicode 字符串放入字符串表资源时遇到了困难。(据我所知,Unicode 字符串需要使用文本编辑器以 L"0x0034" 形式输入到 .rc 文件中。我还没有找到资源编辑器的方法来做到这一点。)有什么提示吗?我可以使用 VC++ 和 MFC 在 VS2008 中使用任何其他资源吗?

编辑:微软论坛上的某个人建议我在记事本中打开有问题的 .rc 文件,并将其保存为 Unicode。不幸的是,这似乎并不能修复对话框,尽管字符串表似乎在日语中工作。

4

4 回答 4

3

除了翻译“字符串”来国际化应用程序之外,还有很多其他的事情。

您的大部分 UI 都需要更新以考虑不同的文本长度和语言方向(希伯来语、中文、阿拉伯语……)

有些图像还需要更改以适应不同的文化(不幸的是,我没有这样的例子),要么是形象不同,要么颜色不符合当地规范。

我们正在使用appTranslator 之类的工具来帮助我们进行外观本地化(UI 重新格式化),并使用专业的技术翻译器来处理字符串。

于 2009-02-18T17:09:28.880 回答
2

您还可以创建仅资源的 dll

有关详细信息,请参阅如何为 MFC 应用程序创建本地化资源 DLL

于 2009-02-18T16:02:16.683 回答
1

您可以使用以下方式国际化您的应用程序。

在您将应用程序转换为 unicode 后(您已经这样做了),所有字符串都应该从 String 表中加载。

  1. 对于每种语言,您需要更改字符串表并编译

  2. 另一种方法是维护一个 XML 文件,其中包含本地化格式的所有字符串。根据语言加载 xml 和字符串。

于 2009-02-18T15:46:53.663 回答
0

这是我的一篇 CodeProject 文章,描述了从字符串表中提取字符串的非常“编码高效”的方法(可翻译文本所需): http: //www.codeproject.com/KB/string/stringtable.aspx

这是另一个帮助您的应用选择正确的 UI 语言的类。它还可以帮助您创建语言选择菜单: http: //www.codeproject.com/KB/locale/LanguageMenu.aspx

Last but not least, appTranslator is a tool that helps you translate the UI of your app, detect what changes were made in resources since the last version, create translated exe or resource DLLs and much more: http://www.apptranslator.com

(Note: I'm the author of appTranslator.)

于 2009-02-22T16:25:18.017 回答