0

在引用文章的评论之后,我修改了我的问题。

我有 ac# Win forms 应用程序,其中包含一些用于用户交互的表单和对话框/消息框。我想将其本地化为一组语言。

  • 大多数表单是通过表单设计器创建的,文本/字符串是通过属性设置的
  • 消息框和其他运行时消息的字符串来自代码。

我在这里阅读了这篇文章 http://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.71).aspx

这指向2种方法,

  • 首先是让 Visual Studio 为您创建资源文件 - 这是为表单设计器生成的代码完成的
  • 第二种是手动添加资源文件并使用 GetString("strMessage") 方法访问它们的代码

我想到的问题是对于设计器生成的代码,我必须首先使用 VS 将自行创建资源文件的方法。为了本地化我的运行时消息和消息框,我必须使用第二种方法,这意味着我必须手动添加资源文件。

我将为每种语言提供两组资源文件。我可以不只使用一种方法并将两种形式的字符串都本地化在一个地方吗?

谢谢,

4

2 回答 2

0

没有什么能阻止你使用这两种技术的组合。通过步骤 1 创建所有语言资源文件,然后将您自己的字符串添加到这些文件中。

于 2012-06-27T05:06:52.080 回答
0

不幸的是,你不能(轻松地)吃掉你的蛋糕。这正是 MSFT 设计事物的方式。您不能将消息字符串添加到 VS 表单设计器生成的代码隐藏“.resx”文件中,因为这些“.resx”文件将在您对它们进行更改时由 VS 重新生成(覆盖您的消息字符串) . 如果您尝试将自己的资源添加到这些文件中(使用 VS 中的“.resx”编辑器),VS 甚至会警告您。反之亦然,也就是说,您不能将代码隐藏的“.resx”资源添加到手动创建的“.resx”文件中(没有很大的困难)。不过情况确实没那么糟糕。多年来一直以这种方式完成并且有效。虽然我个人更喜欢所有资源的中央存储库,每个系统都有其优点和缺点。顺便说一句,您应该为您的消息字符串和“.resx”文件(您自己手动添加的那些)中的任何其他资源使用“强类型”资源。不要使用“GetString()”IOW(或您可能找到的任何其他函数)。强类型资源要容易得多。谷歌了解详细信息并在学习如何使用它们(不难)之后,还搜索 Dmytro Kryvko 的强类型资源生成器(一个非常有用的 VS 工具,可以进一步改进)。强类型资源要容易得多。谷歌了解详细信息并在学习如何使用它们(不难)之后,还搜索 Dmytro Kryvko 的强类型资源生成器(一个非常有用的 VS 工具,可以进一步改进)。强类型资源要容易得多。谷歌了解详细信息并在学习如何使用它们(不难)之后,还搜索 Dmytro Kryvko 的强类型资源生成器(一个非常有用的 VS 工具,可以进一步改进)。

于 2012-06-27T15:08:59.813 回答