我对Visual Studio有一个奇怪的问题。我在C#中有一个包含大量表单的大型应用程序,还有一个包含字符串的.resx
文件。我有.resx
文件的各种语言版本,例如
MyApplication.resx
,
MyApplication.ja.resx
现在拿这段代码,它引用一个windows控件(一个标签)包含在代码的控件定义部分中:
this.uxMyLabel.BackColor = System.Drawing.SystemColors.Window;
resources.ApplyResources(this.uxMyLabel, "uxMyLabel");
this.uxMyLabel.Name = "uxMyLabel";
this.uxMyLabel.ReadOnly = true;
this.uxMyLabel.Text = global::MyNamespace.MyApplication.MY_TEXT_STRING;
我会不时地构建我的应用程序,以发现最后一行已更改为
this.uxMyLabel.Text = global::MyNamespace.MyApplication_ja.MY_TEXT_STRING;
由于没有名为MyApplication_ja.resx
的文件,当然构建失败,我必须编辑并将其更改回MyApplication
我不确定这种变化何时发生(我在编辑代码时?我正在构建它?)但它只是偶尔发生并且发生在很多不同的控件上,通常是整个文件时间。 (虽然从未涉及整个项目)
我正在其他地方编辑相关文件,但与该特定控件没有任何关系。
为什么会这样?
答案 0 :(得分:0)
我并不完全了解你的配置,因此我在分析为什么VS对日语具有亲和力时会感到有点限制(" ja" )本地化程序集。
但我确实看到了Form / UserControl本地化方式的问题,所以我会指出它。而且我认为坚持正确的模式可能有助于摆脱上述行为。
控件不应从this.uxMyLabel.Text = global::MyNamespace.MyApplication.MY_TEXT_STRING;
等全局资源中选择值
而是必须将Form / UserControl的可本地化属性设置为true。
这将专门为Form / Usercontrol创建一个.resx文件,并将从设计器到resx取出所有特定于文化的属性(所有控件)。
这将使开发人员(或设计人员)能够在设计时为不同语言设置本地化文本。这是一个链接 - https://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.100).aspx#
了解您正在处理具有多种表单的大量应用程序,我的建议可能有点太耗费时间,因为它将涉及为所有语言再次本地化每个控件。 但是,如果您提到的问题变得很痛苦,也许您可以先尝试最臭名昭着的形式(用户控件)。
希望它有所帮助。