在c#中本地化UserControl的最佳方法(winforms)

由于我缺乏知识,我编辑了这个问题

我正在使用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).

上一篇:痞子衡嵌入式:高性能MCU之音视频应用开发那些事 - 索引


下一篇:痞子衡嵌入式:终于可以放开聊一聊i.MXRT1170这颗划时代MCU了