由于我缺乏知识,我编辑了这个问题
我正在使用DataGridView制作一个UserControl,我希望尽可能地简化实现过程,所以我想知道我应该用本地化吗?
据我所知和research到目前为止,我的本地化方法是这样的:
例如,假设我的表单/ UserControl上有一个按钮,文本属性设置为“hello”,现在我想将我的表单/ UserControl本地化为意大利语.
>将localizable属性设置为true并选择语言(在这种情况下)
意大利)
>谷歌翻译
>将文本属性设置为“Ciao”
英语是默认的,所以我已经在我的表单中有.resx文件了,但是在此之后,VS将生成意大利语资源,其中button.Text属性为键,“ciao”为值,如果我理解正确,但如果有人来,会发生什么更改button.Text属性从hello到“hello world”,然后我的意大利语资源将不正确,除非他们手动更改,有没有办法以某种方式自动进行此更改?
我想知道这一点,因为当我的UserControl与DataGridView在某个表单上实现时,我不知道我的DataGridView会有哪些列,所以我想知道我应该将本地化过程留给实现我的控件的人吗?
谢谢,我真的很感谢帮助,对不起编辑.
解决方法:
最好的选择是使用代码设置(本地化)文本(使用一个资源文件).
例如,您可以在表单的/用户控件的构造函数中执行此操作.
尽量避免在每个表单/用户控件上使用resx,因为这可能会导致无法维护的代码(重复的键/值),除非您使用第三方工具本地化整个应用程序,如(Infralution Globalizer)
上面的工具不是免费的,但它是我用过的唯一一个
构造函数中的代码将如下所示(假设您有一个YourResourceFile.resx)
public MyUserControl()
{
columnFirstName.Header = YourResourceFile.FirstName;
columnLastName.Header = YourResourceFile.LastName;
}
如果要在网格上添加更多列,则需要添加:
>资源文件中的一个键
>构造函数中的新行
实际上,通常,步骤1不是必需的,因为密钥可能会在那里
更新:
似乎有一个流行的VS插件叫做ResXManager或(here).