我缺乏知识,我编辑了这个问题
我正在使用UserControl
DataGridView
并且我希望尽可能简化实施过程,所以我想知道我应该使用本地化吗?
据我所知,research到目前为止,我的本地化方法是:
例如,假设我的form/UserControl
上有一个按钮,文本属性设置为“hello”,现在我想将form/UserControl
本地化为意大利语。
默认为英语,所以我的表单中已有.resx
个文件,但在此之后,VS会为button.Text
属性生成键和“ciao”的意大利语资源作为值,如果我理解正确,但是如果有人来,将button.Text
属性从hello更改为“hello world”会发生什么,那么我的意大利语资源将不正确,除非它们被更改手动,有没有办法以某种方式自动进行此更改?
我想知道这一点,因为当UserControl
DataGridView
form
在某些DataGridView
上实施时,我无法确定CREATE TABLE #Test ([value] char(1), effective_date date)
INSERT INTO #Test ([value], effective_date) VALUES
('A', '2000-10-31'),
('A', '2000-11-30'),
('B', '2000-10-31'),
('B', '2000-11-30'),
('C', '2001-10-31'),
('C', '2001-12-31')
SELECT *
FROM
(
SELECT [value] AS 'Display', [value], effective_date FROM #Test
) AS SRC
PIVOT
(
COUNT([value])
FOR effective_date
IN ([2000-10-31], [2000-11-30], [2001-10-31], [2001-12-31])
) AS PVT
DROP TABLE #Test
会有哪些列,所以我我想知道我是否应该将本地化流程留给实施控制权的人?
谢谢,我非常感谢您的帮助,对不起编辑。
答案 0 :(得分:4)
最好的选择是使用代码设置(本地化)文本(使用一个资源文件)。
例如,您可以在表单的/用户控件的构造函数中执行此操作
尽量避免对每个表单/用户控件使用resx,因为这可能会导致无法维护的代码(重复的键/值),除非您使用第三方工具本地化整个应用程序,如(Infralution Globalizer)
以上工具不是免费的,但它是我用过的唯一一个
构造函数中的代码将如下所示(假设您有一个YourResourceFile.resx)
public MyUserControl()
{
columnFirstName.Header = YourResourceFile.FirstName;
columnLastName.Header = YourResourceFile.LastName;
}
如果要在网格上添加更多列,请添加:
事实上,通常,步骤1不是必需的,因为密钥可能会在那里
<强>更新强>
似乎有一个名为ResXManager或(here)的流行VS插件。
答案 1 :(得分:1)
您的UserControl的Localizable属性应设置为true。
此外,您要翻译的UserControl的任何自定义属性都应添加以下内容:
[Localizable(true)]
public string MyTranslatableLabel
{
get;set;
}
您可能还必须从包含UserControl的Form的Designer.cs文件中删除如下所示的任何实例,以使其正常工作:
this.myUserControl.MyTranslatableLabel = "Initial label of user control";
所有这些均已在MS VisualStudio 2017社区中进行了测试