本地化类库中一个文件中的窗体控件



我正在开发一个C# WinForms应用程序。本着将来将应用程序移动到 ASP.NET 的想法,解决方案有 2 个项目;

  1. 具有数据访问类和文件夹"Model"的类库项目,每个类/模型都有一个文件。
  2. 具有所有窗体、用户控件及其逻辑的 Windows 窗体应用项目。

对本地化的新手,我Microsoft阅读了这篇文章。根据"本地化最佳实践"的第一步,建议将所有可本地化的资源移动到单独的纯资源 DLL。

由于我的解决方案中已经有一个类库项目(项目 1(,因此我添加了一个新文件夹"本地化",并创建了两个资源文件"Strings.resx"和"Strings.en.resx"。(默认语言为荷兰语。

为了测试此建议的设置,我清除了主窗体上其中一个按钮的 text 属性,以将其替换为我创建的资源文件中的值。但是我不知道如何将资源文件的值连接到文本属性。

我发现这篇文章都是以编程方式完成的,但我不确定这是否是唯一/最好的方法。以及如何通知资源管理器有关其他项目(在同一解决方案中(中的资源文件的信息。默认情况下,当不使用每个表单的资源文件时,是否仍需要将表单的可本地化属性设置为 True?

欢迎任何帮助将我送往正确的方向!

您可以像处理普通类一样使用这些资源文件。您只需通过公开资源,使其可从类库外部访问。为此,您可以使用以下任一选项:

  • 您可以双击资源文件并在设计模式下打开它,在其工具栏中,Access Modifier下拉列表设置为Public

  • 您可以右键单击资源文件并单击属性,然后在属性窗口中将Custom Tool设置为PublicResXFileCodeGenerator

然后,资源类将在程序集中生成为公共类。

然后,若要访问这些资源,可以将程序集添加为 Windows 应用程序的引用,并像使用任何其他类一样使用它们,如下所示:

saveButton.Text = MyResourceAssembly.Resources.StringResources.Save;

注意:

  • 通常,Windows 窗体应用程序的本地化与 ASP.NET 应用程序不同。在 Windows 窗体中,依赖于窗体的LocalizableLanguage属性,如此处所述。

  • 如果出于任何原因想要使用这些资源文件,可以查看此资源扩展程序示例,该示例允许您在设计时使用资源文件设置控件的文本。

  • 如果有可能在您
  • 支持的语言中使用 RTL 语言,则可能需要使用 RTL 形式或改用 RTL 面板。

  • 最好
  • 使用数据批注属性修饰模型类,并尝试在 Windows 窗体中使用这些属性。例如,您可以为模型实现IDataErrorInfo,并在 Windows 窗体以及 MVC 中使用数据批注验证属性 ASP.NET。

最新更新