有一个基本的WinForm问题:默认情况下,为每个表单或用户控件(以及designer.cs)创建一个resx文件。这个resx适用于所有的控件和通过UI添加到控件的文本。程序化字符串的表单资源使用情况?
我想知道如果我可以使用相同的resx来添加必须以编程方式使用并基于条件附加到控件的字符串吗?在任何情况下resx都会被覆盖,这个自定义字符串会被删除吗? 这种情况下遵循的最佳做法是什么?
有一个基本的WinForm问题:默认情况下,为每个表单或用户控件(以及designer.cs)创建一个resx文件。这个resx适用于所有的控件和通过UI添加到控件的文本。程序化字符串的表单资源使用情况?
我想知道如果我可以使用相同的resx来添加必须以编程方式使用并基于条件附加到控件的字符串吗?在任何情况下resx都会被覆盖,这个自定义字符串会被删除吗? 这种情况下遵循的最佳做法是什么?
自动生成的会被覆盖(我使用的是2005),所以我不会使用相同的文件。我会建议在你的项目中为这样的.resx文件创建一个单独的区域。通常我会为每个表单创建一个.resx,当然会匹配这个名称。
编辑:Here是我最近在使用.resx文件本地化应用程序时组织文件/文件夹结构的更详细的答案。
Resources.resx文件中的字符串资源存在一个奇怪的问题。我没有明显的方式发现如何使用IDE为其他语言创建新的资源表。它可以通过手工完成。请按照下列步骤:
构建您的程序。您应该使用附属程序集名为projectname.resources.dll在项目的bin \ Debug目录中获得一个新文件夹。这个卫星程序集包含本地化的字符串和表单中的任何本地化资源。测试它的代码是这样的:
public Form1() {
System.Threading.Thread.CurrentThread.CurrentUICulture =
System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
InitializeComponent();
textBox1.Text = Properties.Resources.String1;
}
在你的表单上,将'Localizable'设置为'true',然后改变'Language'属性。 – 2009-12-07 15:06:00
的确我还没有找到。 ASP.NET项目有菜单工具 - >生成资源文件,但WinForms没有。我对吗? – abatishchev 2012-02-15 19:49:25
btw,真的需要'ResXFileCodeGenerator'吗?默认.resx具有BuildAction = EmbeddedResource,但CustomTool为空。 – abatishchev 2012-02-15 19:50:11
或者你可以试试这个:
添加在主代码();
using System.Resources;
ResXResourceWriter rw = new ResXResourceWriter("Resources.de-DE.resx");
rw.AddResource("String1", "de");
rw.Close();
...
更多的文件
转到bin目录重复,并移动XML(RESX)文件(S)或许属性的文件夹。
转到nobugz后的第5-9步。
皮特,你指的是什么nobugz帖子? – bschandramohan 2009-12-11 15:54:10
不要阻止你,但你可能会对这个“仇恨狂欢”(基于VS 2003)关于ResX文件感兴趣:http://www.windojitsu.com/blog/resxsucks.html希望情况会更好现在,但我仍然很害怕直接使用它们。 – BillW 2009-11-19 06:57:14
对于“杯是半满”的看法(?)也许考虑:http://stackoverflow.com/questions/676312/modifying-resx-file-in-c – BillW 2009-11-19 06:59:14
有趣的链接..感谢指出那些BillW – bschandramohan 2009-12-11 15:53:24