2009-12-14 184 views
2

哪里是放置资源字符串的最佳位置?它取决于范围吗?目前,我们大部分字符串都被放置在项目级别,但某些字符串只需要一个表单。我的想法是,这些字符串应尽可能地放在尽可能接近它们的位置。资源字符串位置

+0

我不确定我明白你的意思。根据定义,不会将“资源”字符串放置在项目资源中吗? – 2009-12-14 14:52:45

+0

在WinForms中也有WinForm级别的可用资源文件。虽然我从来没有在这个层面上使用过资源,但我很好奇其他人是否有,以及他们的方法是什么。 – 2009-12-14 15:35:15

回答

2

这是我做的(不一定是最好的方式,但它运作良好,到目前为止),用于直接使用的形式语言敏感字符串添加程序的字符串,除了:从加入的荒谬数量

除了文件夹放入项目中以按窗体进行分组,但除了将.resx文件保留在其自己的Resources文件夹中之外,我一直无法找到干净的解决方案。通常我会碰到这样的:

资源\语言
资源\ XML
资源\图像

我发现,使用每一个表单.resx文件是最好的方式去吧,因为你永远不知道什么时候你需要添加另一个字符串。我还为诸如“保存”,“加载”等字符串创建了一个Common.resx,这些字符适用于整个应用程序,并将用于多个位置。使用one-.resx-per-form模型时,您必须严格限制仅使用该形式的字符串,这可能意味着随着应用程序的增长,重复一些字符串。但是,这比维护表单和.resx文件之间的引用spiderweb要容易得多。

对于自定义控件,我将.resx文件与源文件放在一起,因为它们通常都有自己的文件夹,并且字符串不会在该自定义控件之外使用。 (注意:这也意味着自定义控件不应该在自己的.resx文件之外使用字符串。)这也将允许您在必要时轻松地将整个自定义控件提取到单独的程序集中。

对于用户控件,通常它们是特定于应用程序的,所以它没有那么糟糕将常见语言的东西绑在它上面,但是我肯定会对用户控件的特定字符串使用单独的.resx,并遵循与自定义控件相同的文件夹结构。

+0

我认为这是我开始思考的方法。在过去,我只是在项目层面抛弃了所有资源,但共享资源的common.resx对于跨越多种表单的资源是有意义的。好主意;心存善念;睿智哲思! – 2009-12-14 15:36:24

+0

编辑WinForms的答案。 – 2009-12-14 18:49:48

4

您应该强烈推荐在表单级别使用资源(在设计器中将表单的Localizable属性设置为True)。设计人员对此有非常好的支持,WinRes.exe实用程序可用于离线本地化字符串。不需要代码。

本地化项目资源字符串是可能的,但IDE不能很好地支持。在this thread中检查我的答案。