使用
DevExpress控件开发时,汉化一直是一个很纠结的问题,各种方法均存在很多不足,在此不作评论。
现将本人实际使用中找到的方法提出共享,多提宝贵意见。
一、本地化对象。DevExpress的文档中列出的是14个。
Product
|
Localizer Class
|
Resource String Enumeration
|
XtraBars
|
BarLocalizer
|
BarString
|
XtraCharts
|
ChartLocalizer
|
ChartStringId
|
XtraEditors
|
Localizer
|
StringId
|
XtraGauges
|
GaugeCoreLocalizer
|
GaugeCoreStringId
|
XtraGrid
|
GridLocalizer
|
GridStringId
|
XtraLayoutControl
|
LayoutLocalizer
|
LayoutStringId
|
XtraNavBar
|
NavBarLocalizer
|
NavBarStringId
|
XtraPivotGrid
|
PivotGridLocalizer
|
PivotGridStringId
|
XtraPrinting
|
PreviewLocalizer
|
PreviewStringId
|
XtraReports
|
ReportLocalizer
|
ReportStringId
|
XtraScheduler
|
SchedulerLocalizer
|
SchedulerStringId
|
XtraSpellChecker
|
SpellCheckerLocalizer
|
SpellCheckerStringId
|
XtraTreeList
|
TreeListLocalizer
|
TreeListStringId
|
XtraVerticalGrid
|
VGridLocalizer
|
VGridStringId
|
另外还有:
DevExpress.Accessibility.AccLocalizer
|
AccStringId
|
DevExpress.XtraRichEdit.Localization.XtraRichEditLocalizer
|
XtraRichEditStringId
|
DevExpress.XtraWizard.Localization.WizardLocalizer
|
WizardStringId
|
DevExpress.XtraScheduler.Localization.SchedulerExtensionsLocalizer
|
SchedulerExtensionsStringId
|
DevExpress.XtraRichEdit.Localization.RichEditExtensionsLocalizer
|
RichEditExtensionsStringId
|
二、
资源字符串枚举。需要确切取得所有的Resource String
Enumeration成员及其值(英语),才能汉化。首先可以到源码中查找,如可以在C:\Program Files
(x86)\DevExpress
2011.2\Components\Sources\DevExpress.XtraBars\DevExpress.XtraBars中找到
Localizer.cs文件,有一个protected override void
PopulateStringTable()过程,里面的代码是加入枚举字符串的值:
AddString(BarString.None, "");
AddString(BarString.PopupMenuEditor, "Popup Menu Editor");
AddString(BarString.AddOrRemove, "&Add or Remove Buttons");
AddString(BarString.ResetBar, "Are you sure you want to reset the changes made to the '{0}' toolbar?");
AddString(BarString.ResetBarCaption, "Customize");
AddString(BarString.ResetButton, "&Reset Toolbar");
AddString(BarString.CustomizeButton, "&Customize ...");
AddString(BarString.ToolBarMenu,
"&Reset$&Delete$!&Name$!Defau< style$&Text Only
(Always)$Text &Only (in Menus)$" +
"Image &and Text$!Begin a &Group$&Visible$&Most recently used");
AddString(BarString.ToolbarNameCaption, "&Toolbar Name:");
AddString(BarString.NewToolbarCaption, "New Toolbar");
AddString(BarString.NewToolbarCustomNameFormat, "Custom {0}");
AddString(BarString.NewMenuName, "Main menu");
AddString(BarString.NewToolbarName, "Tools");
AddString(BarString.NewStatusBarName, "Status bar");
AddString(BarString.RenameToolbarCaption, "Rename Toolbar");
AddString(BarString.CustomizeWindowCaption, "Customization");
AddString(BarString.MenuAnimationSystem, "(System default)");
......
也
就是说,如果你可以重新编译源码,可以直接在这里翻译后编译。当然本人未采用这种方法。但是不同的控件使用的程序文件名不太一致,或是位置不太一致,所以
有的也不太好找,或是不全。后来发现每个Localizer
一般会提供一个CreateDefaultLocalizer.WriteToXml方法,但XtraPivotGrid控件的好象没有,还好又找到一个
Localizer.Active.WriteToXml可能用,效果相同。
试着导出一看是这样的:
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="BarString.None">
<value>
</value>
</data>
<data name="BarString.PopupMenuEditor">
<value>Popup Menu Editor</value>
</data>
<data name="BarString.AddOrRemove">
<value>&Add or Remove Buttons</value>
</data>
<data name="BarString.ResetBar">
<value>Are you sure you want to reset the changes made to the '{0}' toolbar?</value>
</data>
<data name="BarString.ResetBarCaption">
<value>Customize</value>
</data>
<data name="BarString.ResetButton">
<value>&Reset Toolbar</value>
</data>
<data name="BarString.CustomizeButton">
<value>&Customize ...</value>
</data>
......
用这个方法导出所有字符串枚举名称及值到.XML文件中。
三、翻译。上面的内容有了,剩下就是翻译了,我相信大家都会想,不会这么全都重新开始吧,当然,原来可用资源应当用上才对。如官方汉化。我是这样做的,如下:
(1)在数据库建立一个表,包括name,EN(原文,英语),CN(中文简体),TW(中文繁体)等字段。将上述XML文件内容全部导入。
(2)编写一段代码。将官方汉化的资源文件的内容取出(当然是不全啦)。我写的是VB代码,谨供参考啦(如有需要C#请自己改一下吧)。
Private Sub SimpleButton1_Click(sender As System.Object, e As System.EventArgs) Handles SimpleButton1.Click
OpenFileDialog1.Filter = "resx文件|*.resx"
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
resxfilename = OpenFileDialog1.FileName
End If
rsxr = New ResXResourceReader(resxfilename)
If Not IsNothing(rsxr) Then
resxdt = getDTread("SELECT * FROM Localizer WHERE name LIKE '" & TextEdit1.Text.Trim & "%' AND CN='' ORDER BY ID")
‘getDTread是读取表过程。
Dim d As DictionaryEntry
Dim s As Integer = 0
Dim dtrow() As DataRow
Dim cr As Integer = -1
MemoEdit1.Text = ""
Dim str As String = ""
For Each d In rsxr
If InStr(d.Key.ToString, TextEdit1.Text.Trim) > 0 Then
dtrow = resxdt.Select("name ='" & d.Key.ToString & "'")
If dtrow.Length > 0 Then
cr = resxdt.Rows.IndexOf(dtrow(0))
If cr >= 0 Then
resxdt.Rows(cr).Item("CN") = d.Value.ToString()
s += 1
str += d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString() + Chr(13) + Chr(10)
End If
End If
End If
Next d
MemoEdit1.Text = str
If s > 0 Then
getDTsave("Localizer", 1, resxdt.GetChanges)
‘getDTsave是提交表过程
End If
XXshow("共" & s.ToString.Trim & "行", Me)
MemoEdit1.Focus()
End If
rsxr.Close()
End Sub
在
打开文件对话框中找到官方汉化包中的LocalizationRes.zh-CHS.resx
文件,把已经有的汉化内容存入数据库表中。可以同时将繁体中文(LocalizationRes.zh-CHT.resx)也取出存入,便于以后使用或用
来参照,并且它还比简体中文内容多一些,但也缺很多。
这样处理之后,完成了一半左右。
(3)查询未经翻译的记录并导入到EXCEL文件。这样在参考繁体时可以块复制再简繁体转换,同时利于使用使用bing翻译,方法是将英文列块复制到WORD文档中,然使用WORD的全文翻译,之后在网页复制结果可成块粘贴到EXCEL中,之后再修改。
四、对象汉化代码。编写下列代码(示例)。重写GetLocalizedString方法。
Imports System.Resources
Imports System.Reflection
Imports DevExpress.XtraBars
Imports DevExpress.XtraBars.Localization
Public Class XLocallizerBar
Inherits DevExpress.XtraBars.Localization.BarLocalizer
Public Overrides ReadOnly Property Language() As String
Get
Return "Chinese"
End Get
End Property
Public Overrides Function GetLocalizedString
(ByVal id As DevExpress.XtraBars.Localization.BarString) As String
Dim ret As String = ""
Select Case id
Case BarString.AddOrRemove : Return "添加或删除按钮(&A)" '&Add or Remove Buttons
Case BarString.BarAllItems : Return "(所有项)" '(All Items)
Case BarString.BarUnassignedItems : Return "(未设定项)" '(Unassigned Items)
Case BarString.CloseButton : Return "关闭" 'Close
Case BarString.CustomizeButton : Return "自定义(&C)..." '&Customize ...
Case BarString.CustomizeRibbon : Return "自定义功能区(&R)..." 'Customize the &Ribbon...
Case BarString.CustomizeWindowCaption : Return "自定义" 'Customization
Case BarString.HelpButton : Return "帮助" 'Help
Case BarString.MaximizeButton : Return "最大化" 'Maximize
Case BarString.RenameToolbarCaption : Return "重命名工具栏" 'Rename Toolbar
Case BarString.ResetBarCaption : Return "自定义" 'Customize
......
Case Else
ret = id.ToString
End Select
Return ret
End Function
End Class
其中的CASE语句从数据库查询自动生成,生成时带上原文,便于以后修改:
SELECT 'CASE '+name+': RETURN "' + CN + '" '''+EN as case语句
FROM Localizer where name LIKE 'BarString%'
ORDER BY name;
五、完成Localizer的替换。在主程序中加入下列代码:
DevExpress.Accessibility.AccLocalizer.Active = New XLocallizerAcc
DevExpress.XtraBars.Localization.BarLocalizer.Active = New XLocallizerBar
DevExpress.XtraCharts.Localization.ChartLocalizer.Active = New XLocallizerCharts
DevExpress.XtraEditors.Controls.Localizer.Active = New XLocallizerEditors
DevExpress.XtraGauges.Core.Localization.GaugesCoreLocalizer.Active = New XLocallizerGauges
DevExpress.XtraGrid.Localization.GridLocalizer.Active = New XLocallizerGrid
DevExpress.XtraLayout.Localization.LayoutLocalizer.Active = New XLocallizerLayout
DevExpress.XtraNavBar.NavBarLocalizer.Active = New XLocallizerNavBar
DevExpress
.XtraPivotGrid.Localization.PivotGridLocalizer.Active = New XLocallizerPivotGrid
DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = New XLocallizerPrinting
DevExpress.XtraReports.Localization.ReportLocalizer.Active = New XLocallizerReports
DevExpress.XtraRichEdit.Localization.XtraRichEditLocalizer.Active = New XLocallizerRichEdit
DevExpress.XtraRichEdit.Localization.RichEditExtensionsLocalizer.Active = New XLocallizerRichEditExtensionsjsonStore加载远程和本地数据实例
DevExpress.XtraScheduler.Localization.SchedulerLocalizer.Active = New XLocallizerScheduler
DevExpress.XtraScheduler.Localization.SchedulerExtensionsLocalizer.Active = New XLocallizerSchedulerExtensions
DevExpress.XtraSpellChecker.Localization.SpellCheckerLocalizer.Active = New XLocallizerSpellChecker
DevExpress.XtraTreeList.Localization.TreeListLocalizer.Active = New XLocallizerTreeList
DevExpress.XtraVerticalGrid.Localization.VGridLocalizer.Active = New XLocallizerVerticalGrid
DevExpress.XtraWizard.Localization.WizardLocalizer.Active = New XLocallizerWizard
总
结。这种看上去麻烦,实际比较简单实用,后面发现错误时,可在源代码中搜索并替换,比较方便。当然其他方法也可以使用。由于本人是开发工程中完成的,代码
也比较长,所以暂时不能提供完整的程序包,如果网友有需要,请在留言中留下QQ号码,可以提供源码。文中有哪些错漏,亦请各位指正。
在DEVEXPRESS使用中,发现功能确实不错,便运行速度还是很慢,不知哪位有好的办法吗?
相关推荐
本教程将详细讲解DevExpress .Net WinForm的简体汉化资源的获取、集成以及调用方法。 首先,获取DevExpress .Net WinForm的简体汉化资源通常需要从DevExpress官方网站下载,这些资源通常包含语言包文件,例如DLL或...
标题中的"Devexpress 13.1.5 13.1.6 winform本地汉化类"指的是在这些版本中,Devexpress对Winform平台的控件进行了汉化处理,使得中国用户能够更方便地理解和使用这些控件,而无需面对英文界面的困扰。汉化不仅包括...
这意味着此版本的控件和文档都已汉化,对于中文环境下的开发者来说,使用起来更加直观,无需担心语言障碍。 5. **性能优化**:DEVexpress控件通常以高性能著称,即使处理大量数据,也能保持流畅的运行。9.2.6版本...
DevExpress控件集包含了众多功能强大的组件,如表格、图表、报表、导航、菜单、对话框等,这些控件在WinForm应用程序中广泛使用。Chm(Compiled HTML Help)文件是一种常见的帮助文档格式,它将HTML页面集合整理成一...
通过安装此汉化包,可以使得DevExpress的控件和组件显示为中文,提高中国用户的使用体验。 使用步骤如下: 1. 首先,你需要从提供的链接或位置下载"DevExpress汉化包zh-Hans.rar"压缩文件。 2. 使用解压缩工具(如...
这个“DevExpress8.2.4 汉化[winform]简体”版本是专为Windows Forms应用设计的,包含了对DevExpress 8.2.4版本的中文本地化支持。 在Windows Forms开发中,DevExpress提供了大量的UI控件,例如数据网格(GridView...
DevExpress控件是DeveloperExpress公司开发的一套功能丰富、界面美观且可定制性强的.NET控件库,适用于Windows窗体(Winform)、Web、移动设备等平台的开发。DevExpress控件不仅拥有大量的内置控件和工具,还可以...
DevExpress WinForm控件库包含了各种各样的组件,如数据网格(GridControl)、报表(Ribbon and Report Control)、图表(Chart Control)、表单设计器(Form Designer)等。这些控件设计精美,功能强大,且易于集成...
使用方法: 引用 Dxper.LocalizationCHS.Win.v13.1.5.dll文件,并在窗体Form_Load事件中添加以下...需要dx 13.1.5(asp.net, wpf, winform)控件包和破解的请移步 http://download.csdn.net/detail/u010891254/5729635
汉化后的13.2.6版本使得开发者在构建Web应用时,可以更直观地理解各种控件的属性和方法,从而降低学习和使用难度。 Silverlight是微软推出的一种RIA(富互联网应用)平台,尽管现在已经不再发展,但在当时,...
使用方法: 1、将压缩文件中的DevExpress.Data.v13.1.dll、DevExpress.Utils.v13.1.dll两个文件替换原来的文件即可。发布不受影响,发布后也可使用。 2、如果已经安装过缓存GAC则还需替换原有的缓存GAC。如果是.net ...
1. DevExtreme控件汉化处理:控件的本地化对提升用户体验至关重要,尤其在中文使用环境下。文中可能介绍了如何为DevExpress控件实现汉化,或者如何使用已经汉化的控件。 2. 应用Office2007和Office2010界面主题:...
在这个“DevExpress15.2汉化组件+中文帮助文档.rar”压缩包中,包含了DevExpress 15.2版本的一些关键组件的汉化版本以及对应的中文帮助文档,这对于使用C#语言开发WinForm应用的开发者来说非常有帮助。 首先,我们...
"支持WPF,WinForm和WebForm"表示这个汉化包覆盖了DevExpress在三种主要.NET框架下的应用。WPF是一个面向Windows的高性能、灵活的用户界面框架,WinForms则适用于传统的桌面应用程序,而WebForm是ASP.NET的一部分,...
在"Devexpress13.2全中文,含XAF、设计时刻、WinForm、ASP、WPF"这个资源中,用户可以获得DevExpress 13.2.6版本的完整中文版,适用于13.2系列的所有版本。 1. DevExpress 13.2.6:这是一个关键版本,包含了该时期...
DXperience 9.1.2 简体汉化,本地化 ...相应的DEVEXPRESS控件显示为中文。 典型案例:GridControl的GroupPanel上显示的 Drag a column header here to group by that column 将变为 拖动列标题至此,根据该列分组
DevExpress 控件库广泛应用于创建高效且美观的用户界面,尤其在企业级应用开发中备受青睐。"DevExpressLocalizedResources-2018.2-zh-Hans 中文包"是一个专门为DevExpress控件库提供的本地化资源包,主要服务于2018....
DXperience包含了大量的WinForm控件,如Grid控件、Chart控件、BarManager、Scheduler等,这些控件都经过精心设计和优化,提供了卓越的性能和丰富的功能。例如,GridControl支持复杂的数据绑定、排序、过滤、分组、...
DXperience 9.1.5包含了丰富的WinForm控件集,如网格、图表、表单布局工具等,这些控件都经过精心设计和优化,以提高开发效率和提供出色的用户体验。该版本的汉化不仅包括控件的界面文本,还可能涉及帮助文档、示例...
DXperience 8.2.5 是DevExpress公司推出的一款强大的Windows Forms开发工具集,它提供了丰富的UI控件和组件,帮助开发者构建出具有专业外观和高效功能的桌面应用程序。本资源包含的是DXperience 8.2.5的繁体汉化版本...