设置我所有表单的可本地化属性

问题描述 投票:0回答:2

有没有办法自动设置这个属性?我们有数百种表单需要本地化,将所有这些表单设置为 true 将是一场噩梦。

有没有办法让 Visual Studio 将解决方案/项目中的所有表单设置为 Localized = true?

winforms visual-studio-2010 localization
2个回答
5
投票

当您创建一个新的Windows Form时,它没有*.resx文件以及designer.cs文件中的相关代码。当您将 Form 的 Localized 属性设置为 True 时,VS 会将以下代码添加到 Designer.cs 中,但同时也会生成并添加 *.resx 文件。

        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
        this.SuspendLayout();
        // 
        // Form2
        // 
        resources.ApplyResources(this, "$this");
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Name = "Form2";
        this.ResumeLayout(false);

由于 VS 添加了 *.resx 文件,因此无法仅查找和替换或剪切和粘贴代码。

我尝试记录一个 VS 宏来自动化它,但是,它不会记录将可本地化属性更改为 True(不知道为什么)

这个临时宏可能是您的一个开始。 您可以编写获取表单文件名列表并使用下面的宏代码循环遍历它们。

    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("WindowsFormsApplication1\WindowsFormsApplication1\Form3.cs").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ActiveWindow.Object.DoDefaultAction()
    DTE.Windows.Item(Constants.vsWindowKindProperties).Activate()

2
投票

它由表单的 .resx 文件中如下所示的条目表示(针对 .NET Framework 版本进行调整):

<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
</metadata>

自动将所有值切换为 true 的最简单方法可能是运行 Form 子类文件,将其 .resx 文件作为 XML 加载以测试元素是否存在,如果不存在则添加它。 或者,您可以使用 ResXResourceReader 和 ResXResourceWriter 来读取和写入文件内容。

© www.soinside.com 2019 - 2024. All rights reserved.