有没有办法自动化这个属性的集合?我们有数以百计的表格需要进行本地化,这将是一个噩梦,所有这些都将此属性设置为true。
有没有办法让visual studio将解决方案/项目中的所有表单设置为Localizable = true如何?
答案 0 :(得分:4)
创建新的Windows窗体时,它没有* .resx文件和designer.cs文件中的相关代码。当您将Form的Localizable属性设置为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宏来自动化它但是,它不会记录将Localizable属性更改为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()
答案 1 :(得分:1)
它由表单的.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来读取和写入文件内容。