`
star65225692
  • 浏览: 273857 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

DevExpress WinForm 控件汉化方法

阅读更多

使用 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&lt 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>&amp;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>&amp;Reset Toolbar</value>

</data>

<data name="BarString.CustomizeButton">

<value>&amp;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 .Net WinForm的简体汉化资源通常需要从DevExpress官方网站下载,这些资源通常包含语言包文件,例如DLL或...

    Devexpress 13.1.5 13.1.6 winform本地汉化类

    标题中的"Devexpress 13.1.5 13.1.6 winform本地汉化类"指的是在这些版本中,Devexpress对Winform平台的控件进行了汉化处理,使得中国用户能够更方便地理解和使用这些控件,而无需面对英文界面的困扰。汉化不仅包括...

    DEVexpress 9.2.6 winform 中文

    这意味着此版本的控件和文档都已汉化,对于中文环境下的开发者来说,使用起来更加直观,无需担心语言障碍。 5. **性能优化**:DEVexpress控件通常以高性能著称,即使处理大量数据,也能保持流畅的运行。9.2.6版本...

    DevExpress 18.1 汉化包

    DevExpress是一款知名的.NET开发工具套件,它提供了丰富的控件库,用于构建高性能、现代用户界面的应用程序。这个"DevExpress 18.1 汉化包"是专门为DevExpress的18.1版本提供的中文语言包,旨在帮助中国开发者和用户...

    DevExpress 14.2 汉化包

    DevExpress 14.2的汉化包不仅有助于中国开发者理解控件的功能,还能提高开发效率,避免因语言障碍引起的误解。同时,对于企业级项目,使用汉化后的DevExpress可以提供更好的用户体验,尤其是对于那些非英语熟练的...

    DevExpress控件中文帮助文档chm格式

    DevExpress控件集包含了众多功能强大的组件,如表格、图表、报表、导航、菜单、对话框等,这些控件在WinForm应用程序中广泛使用。Chm(Compiled HTML Help)文件是一种常见的帮助文档格式,它将HTML页面集合整理成一...

    DevExpress汉化包zh-Hans.rar

    通过安装此汉化包,可以使得DevExpress的控件和组件显示为中文,提高中国用户的使用体验。 使用步骤如下: 1. 首先,你需要从提供的链接或位置下载"DevExpress汉化包zh-Hans.rar"压缩文件。 2. 使用解压缩工具(如...

    DevExpress8.2.4 汉化[winform]简体

    这个“DevExpress8.2.4 汉化[winform]简体”版本是专为Windows Forms应用设计的,包含了对DevExpress 8.2.4版本的中文本地化支持。 在Windows Forms开发中,DevExpress提供了大量的UI控件,例如数据网格(GridView...

    DevExpress控件使用经验总结

    DevExpress控件是DeveloperExpress公司开发的一套功能丰富、界面美观且可定制性强的.NET控件库,适用于Windows窗体(Winform)、Web、移动设备等平台的开发。DevExpress控件不仅拥有大量的内置控件和工具,还可以...

    DevExpress控件说明中文版-WinForm

    DevExpress WinForm控件库包含了各种各样的组件,如数据网格(GridControl)、报表(Ribbon and Report Control)、图表(Chart Control)、表单设计器(Form Designer)等。这些控件设计精美,功能强大,且易于集成...

    Devexpress dxperience 13.1.5汉化资源

    使用方法: 引用 Dxper.LocalizationCHS.Win.v13.1.5.dll文件,并在窗体Form_Load事件中添加以下...需要dx 13.1.5(asp.net, wpf, winform)控件包和破解的请移步 http://download.csdn.net/detail/u010891254/5729635

    关于DevExPress 13.2.6汉化

    汉化后的13.2.6版本使得开发者在构建Web应用时,可以更直观地理解各种控件的属性和方法,从而降低学习和使用难度。 Silverlight是微软推出的一种RIA(富互联网应用)平台,尽管现在已经不再发展,但在当时,...

    DevExpress 13.1.8 破解(完全破解可发布)

    使用方法: 1、将压缩文件中的DevExpress.Data.v13.1.dll、DevExpress.Utils.v13.1.dll两个文件替换原来的文件即可。发布不受影响,发布后也可使用。 2、如果已经安装过缓存GAC则还需替换原有的缓存GAC。如果是.net ...

    DevExpress控件

    1. DevExtreme控件汉化处理:控件的本地化对提升用户体验至关重要,尤其在中文使用环境下。文中可能介绍了如何为DevExpress控件实现汉化,或者如何使用已经汉化的控件。 2. 应用Office2007和Office2010界面主题:...

    DevExpress15.2汉化组件+中文帮助文档.rar

    在这个“DevExpress15.2汉化组件+中文帮助文档.rar”压缩包中,包含了DevExpress 15.2版本的一些关键组件的汉化版本以及对应的中文帮助文档,这对于使用C#语言开发WinForm应用的开发者来说非常有帮助。 首先,我们...

    devexpress 14.2 汉化文件2 zh-Hans

    DevExpress 14.2 汉化文件2(zh-Hans)是针对DevExpress控件库的一个关键组件,主要用于将该版本的DevExpress产品翻译为简体中文。这个汉化包包含了多个资源DLL文件,确保了DevExpress的各个模块在中文环境下能够...

    DevExpress V12.1.X 汉化包

    "支持WPF,WinForm和WebForm"表示这个汉化包覆盖了DevExpress在三种主要.NET框架下的应用。WPF是一个面向Windows的高性能、灵活的用户界面框架,WinForms则适用于传统的桌面应用程序,而WebForm是ASP.NET的一部分,...

    Devexpress13.2全中文,含XAF、设计时刻、WinForm、ASP、WPF

    在"Devexpress13.2全中文,含XAF、设计时刻、WinForm、ASP、WPF"这个资源中,用户可以获得DevExpress 13.2.6版本的完整中文版,适用于13.2系列的所有版本。 1. DevExpress 13.2.6:这是一个关键版本,包含了该时期...

    DevExpress 9.1.2 简体中文官方汉化

    DXperience 9.1.2 简体汉化,本地化 ...相应的DEVEXPRESS控件显示为中文。 典型案例:GridControl的GroupPanel上显示的 Drag a column header here to group by that column 将变为 拖动列标题至此,根据该列分组

    DevExpressLocalizedResources-2018.2-zh-Hans 中文包

    DevExpress 控件库广泛应用于创建高效且美观的用户界面,尤其在企业级应用开发中备受青睐。"DevExpressLocalizedResources-2018.2-zh-Hans 中文包"是一个专门为DevExpress控件库提供的本地化资源包,主要服务于2018....

Global site tag (gtag.js) - Google Analytics