DevExpress是Developer Express Inc.推出的一套VCL组件,近来写的程序中使用到了其中的ExpressQuantumGrid Suite 组件包,深感其功能强大,可以大大加快您的开发速度。不愧是一流的产品,有兴趣的话,您也可以到如下站点了解详细信息:http://www.devexpress.com。
在使用中,有一些Dialog中的资源字符串是英文显示,由于地方不多,最初的做法是自己设计那些Dialog,难免需要自己写些代码,有些不便。于是上网翻阅资料,有两种解决方法,一种是直接修改组件包中的源代码(前两天我也是这样处理);还有一种是利用cxSetResourceString函数进行转换,原以为该函数只能用在.Net版本,未做尝试,下午才得知,原来Delphi和BCB版本内也可以使用,真是个大失误。
下午使用该函数试着翻译了ExpressQuantumGrid Suite中的部分,并贴出来,以供大家参考。如果您觉得有翻译错误的地方,可自行修正,如您愿意,也可以来信告知于我。就我所需要的TcxGrid组件,我已经汉化,您可以照此翻译其他组件,随着使用组件的增加,我将持续更新。
本文运行环境:Windows XP Professional SP2, Delphi 7 Update 1, DevExpress ExpressQuantumGrid Suite v5.13。
处理方法如下:
1. 在您自己的程序中增加一个procedure,我这里是languageToChinese,所有的翻译部分代码写在该procedure中;
2. 在procedure所在的源代码文件中,uses处,增加您要汉化的资源字符串所在的单元,通常这些单元在组件包的source文件夹下,您可以自行查找,选择汉化;
3. 在您程序合适的某处,调用该procedure,比如FormCreate中,以保证程序启动后,用户就可以看到正确的汉化界面。
代码如下:
1. 这里我汉化了六个单元,uses和type处增加:
uses
... ...,
cxGridStrs, cxFilterConsts, cxGridPopupMenuConsts, cxFilterControlStrs, cxEditConsts, cxNavigator;
type
TForm1 = class(TForm)
...
procedure languageToChinese;
end;
2. procedure代码如下,其中每行最后的注释表示原有的字符串资源:
procedure TForm1.languageToChinese; begin //cxGridPopupMenuConsts cxSetResourceString(@cxSGridNone,'无'); //'None'; cxSetResourceString(@cxSGridSortColumnAsc,'升序'); //'Sort Ascending'; cxSetResourceString(@cxSGridSortColumnDesc,'降序'); //'Sort Descending'; cxSetResourceString(@cxSGridClearSorting,'清除排序'); //'Clear Sorting'; cxSetResourceString(@cxSGridGroupByThisField,'按该域分组'); //'Group By This Field'; cxSetResourceString(@cxSGridRemoveThisGroupItem,'从组中移除'); //'Remove from grouping'; cxSetResourceString(@cxSGridGroupByBox,'按箱分组'); //'Group By Box'; cxSetResourceString(@cxSGridAlignmentSubMenu,'布局'); //'Alignment'; cxSetResourceString(@cxSGridAlignLeft,'居左'); //'Align Left'; cxSetResourceString(@cxSGridAlignRight,'居右'); //'Align Right'; cxSetResourceString(@cxSGridAlignCenter,'居中'); //'Align Center'; cxSetResourceString(@cxSGridRemoveColumn,'移除该列'); //'Remove This Column'; cxSetResourceString(@cxSGridFieldChooser,'范围选择'); //'Field Chooser'; cxSetResourceString(@cxSGridBestFit,'最匹配'); //'Best Fit'; cxSetResourceString(@cxSGridBestFitAllColumns,'最匹配(所有列)'); //'Best Fit (all columns)'; cxSetResourceString(@cxSGridShowFooter,'页脚'); //'Footer'; cxSetResourceString(@cxSGridShowGroupFooter,'组页脚'); //'Group Footers'; cxSetResourceString(@cxSGridSumMenuItem,'和'); //'Sum'; cxSetResourceString(@cxSGridMinMenuItem,'最小值'); //'Min'; cxSetResourceString(@cxSGridMaxMenuItem,'最大值'); //'Max'; cxSetResourceString(@cxSGridCountMenuItem,'计数'); //'Count'; cxSetResourceString(@cxSGridAvgMenuItem,'平均值'); //'Average'; cxSetResourceString(@cxSGridNoneMenuItem,'无'); //'None'; //cxGridStrs cxSetResourceString(@scxCantCreateExportOutputFile,'不能创建导出输出文件'); //Can't create the export output file cxSetResourceString(@scxGridConverterIntermediaryMissing,'缺少一个中间组件!'#13#10' 请为表单增加一个 %s 组件.'); //Missing an intermediary component!'#13#10' Please add a %s component to the form. cxSetResourceString(@scxGridCustomizationFormBandsPageCaption,'带'); //'Bands' cxSetResourceString(@scxGridCustomizationFormCaption,'组合查询'); //'Customization' cxSetResourceString(@scxGridCustomizationFormColumnsPageCaption,'列'); //'Columns' cxSetResourceString(@scxGridDeletingConfirmationCaption,'确定'); //'Confirm' cxSetResourceString(@scxGridDeletingFocusedConfirmationText,'删除记录?'); //'Delete record?' cxSetResourceString(@scxGridDeletingSelectedConfirmationText,'删除所有选中记录?'); //'Delete all selected records?' cxSetResourceString(@scxGridFilterCustomizeButtonCaption,'组合查询...'); //'Customize...' cxSetResourceString(@scxGridFilterIsEmpty,'无筛选'); //'' cxSetResourceString(@scxGridGroupByBoxCaption,'拖动一个列标题至此按其对记录进行分组排列'); //'Drag a column header here to group by that column' cxSetResourceString(@scxGridRecursiveLevels,'您不能创建一个递归层'); //'You cannot create recursive levels' cxSetResourceString(@scxImportErrorCaption,'导入错误'); //'Import error' cxSetResourceString(@scxNotExistGridLevel,'不存在活动的格子层'); //'Active grid level does not exist' cxSetResourceString(@scxGridNoDataInfoText,'没有数据供显示'); //'' cxSetResourceString(@scxGridChartValueHintFormat,'%s 对于 %s 是 %s'); //'%s for %s is %s' //cxFilterConsts cxSetResourceString(@cxSFilterOperatorEqual,'等于'); //'equals'; cxSetResourceString(@cxSFilterOperatorNotEqual,'不等于'); //'does not equal'; cxSetResourceString(@cxSFilterOperatorLess,'小于'); //'is less than'; cxSetResourceString(@cxSFilterOperatorLessEqual,'小于等于'); // 'is less than or equal to'; cxSetResourceString(@cxSFilterOperatorGreater,'大于'); //'is greater than'; cxSetResourceString(@cxSFilterOperatorGreaterEqual,'大于等于'); //'is greater than or equal to'; cxSetResourceString(@cxSFilterOperatorLike,'匹配'); //'like'; cxSetResourceString(@cxSFilterOperatorNotLike,'不匹配'); //'not like'; cxSetResourceString(@cxSFilterOperatorBetween,'介于'); //'between'; cxSetResourceString(@cxSFilterOperatorNotBetween,'不介于'); //'not between'; cxSetResourceString(@cxSFilterOperatorInList,'位于'); //'in'; cxSetResourceString(@cxSFilterOperatorNotInList,'不位于'); //'not in'; cxSetResourceString(@cxSFilterOperatorYesterday,'是昨天'); //'is yesterday'; cxSetResourceString(@cxSFilterOperatorToday,'是今天'); //'is today'; cxSetResourceString(@cxSFilterOperatorTomorrow,'是明天'); //'is tomorrow'; cxSetResourceString(@cxSFilterOperatorLastWeek,'是上周'); //'is last week'; cxSetResourceString(@cxSFilterOperatorLastMonth,'是上个月'); //'is last month'; cxSetResourceString(@cxSFilterOperatorLastYear,'是去年'); //'is last year'; cxSetResourceString(@cxSFilterOperatorThisWeek,'是本周'); //'is this week'; cxSetResourceString(@cxSFilterOperatorThisMonth,'是本月'); //'is this month'; cxSetResourceString(@cxSFilterOperatorThisYear,'是今年'); //'is this year'; cxSetResourceString(@cxSFilterOperatorNextWeek,'是下周'); //'is next week'; cxSetResourceString(@cxSFilterOperatorNextMonth,'是下个月'); //'is next month'; cxSetResourceString(@cxSFilterOperatorNextYear,'是明年'); //'is next year'; cxSetResourceString(@cxSFilterAndCaption,'与'); //'and'; cxSetResourceString(@cxSFilterOrCaption,'或'); //'or'; cxSetResourceString(@cxSFilterNotCaption,'非'); //'not'; cxSetResourceString(@cxSFilterBlankCaption,'空'); //'blank'; cxSetResourceString(@cxSFilterOperatorIsNull,'空'); //'is blank'; cxSetResourceString(@cxSFilterOperatorIsNotNull,'非空'); //'is not blank'; cxSetResourceString(@cxSFilterOperatorBeginsWith,'起始于'); //'begins with'; cxSetResourceString(@cxSFilterOperatorDoesNotBeginWith,'不起始于'); //'does not begin with'; cxSetResourceString(@cxSFilterOperatorEndsWith,'结束于'); //'ends with'; cxSetResourceString(@cxSFilterOperatorDoesNotEndWith,'不结束于'); //'does not end with'; cxSetResourceString(@cxSFilterOperatorContains,'包含'); //'contains'; cxSetResourceString(@cxSFilterOperatorDoesNotContain,'不包含'); //'does not contain'; cxSetResourceString(@cxSFilterBoxAllCaption,'所有'); //'(All)'; cxSetResourceString(@cxSFilterBoxCustomCaption,'组合查询...'); //'(Custom...)'; cxSetResourceString(@cxSFilterBoxBlanksCaption,'空白'); //'(Blanks)'; cxSetResourceString(@cxSFilterBoxNonBlanksCaption,'非空'); // '(NonBlanks)'; //cxFilterControlStrs cxSetResourceString(@cxSFilterBoolOperatorAnd,'与'); //'AND'; // all cxSetResourceString(@cxSFilterBoolOperatorOr,'或'); //'OR'; // any cxSetResourceString(@cxSFilterBoolOperatorNotAnd,'非与'); //'NOT AND'; // not all cxSetResourceString(@cxSFilterBoolOperatorNotOr,'非或'); //'NOT or'; // not any cxSetResourceString(@cxSFilterRootButtonCaption,'过滤'); //'Filter'; cxSetResourceString(@cxSFilterAddCondition,'增加条件'); //'Add &Condition'; cxSetResourceString(@cxSFilterAddGroup,'增加组'); //'Add &Group'; cxSetResourceString(@cxSFilterRemoveRow,'删除行'); //'&Remove Row'; cxSetResourceString(@cxSFilterClearAll,'清除所有记录'); //'Clear &All'; cxSetResourceString(@cxSFilterFooterAddCondition,'按键以增加一个新的条件'); //'press the button to add a new condition'; cxSetResourceString(@cxSFilterGroupCaption,'运用于下列条件'); //'applies to the following conditions'; cxSetResourceString(@cxSFilterRootGroupCaption,'<根>'); //''; cxSetResourceString(@cxSFilterControlNullString,'<空>'); //''; cxSetResourceString(@ cxSFilterErrorBuilding,'不能创建过滤'); //'Can''t build filter from source'; cxSetResourceString(@cxSFilterDialogCaption,'自定义过滤'); //'Custom Filter'; cxSetResourceString(@cxSFilterDialogInvalidValue,'无效的值'); //'Invalid value'; cxSetResourceString(@cxSFilterDialogUse,'用'); //'Use'; cxSetResourceString(@cxSFilterDialogSingleCharacter,'表示任意单字符'); //'to represent any single character'; cxSetResourceString(@cxSFilterDialogCharactersSeries,'表示任意一组字符'); //'to represent any series of characters'; cxSetResourceString(@cxSFilterDialogOperationAnd,'与'); //'AND'; cxSetResourceString(@cxSFilterDialogOperationOr,'或'); //'OR'; cxSetResourceString(@cxSFilterDialogRows,'显示如下行:'); //'Show rows where:'; cxSetResourceString(@cxSFilterControlDialogCaption,'过滤器创建器'); //'Filter builder'; cxSetResourceString(@cxSFilterControlDialogNewFile,'untitled.flt'); //'untitled.flt'; cxSetResourceString(@cxSFilterControlDialogOpenDialogCaption,'打开一个过滤器'); //'Open an existing filter'; cxSetResourceString(@cxSFilterControlDialogSaveDialogCaption,'将活动的过滤器保存至文件'); //'Save the active filter to file'; cxSetResourceString(@cxSFilterControlDialogActionSaveCaption,'另存为...'); //'&Save As...'; cxSetResourceString(@cxSFilterControlDialogActionOpenCaption,'打开...'); //'&Open...'; cxSetResourceString(@cxSFilterControlDialogActionApplyCaption,'运用'); //'&Apply'; cxSetResourceString(@cxSFilterControlDialogActionOkCaption,'确定'); //'OK'; cxSetResourceString(@cxSFilterControlDialogActionCancelCaption,'取消'); //'Cancel'; cxSetResourceString(@cxSFilterControlDialogFileExt,'flt'); //'flt'; cxSetResourceString(@cxSFilterControlDialogFileFilter,'Filters (*.flt)|*.flt'); //'Filters (*.flt)|*.flt'; //cxEditConsts cxSetResourceString(@cxSMenuItemCaptionCut,'剪切'); //'Cu&t'; cxSetResourceString(@cxSMenuItemCaptionCopy,'复制'); //'&Copy'; cxSetResourceString(@cxSMenuItemCaptionPaste,'粘贴'); //'&Paste'; cxSetResourceString(@cxSMenuItemCaptionDelete,'删除'); //'&Delete'; cxSetResourceString(@cxSMenuItemCaptionLoad,'导入'); //'&Load...'; cxSetResourceString(@cxSMenuItemCaptionSave,' 导出'); //'Save &As...'; //cxNavigator cxSetResourceString(@cxNavigatorHint_First,'第一条记录'); //'First record'; cxSetResourceString(@cxNavigatorHint_Prior,'前一条记录'); //'Prior record'; cxSetResourceString(@cxNavigatorHint_PriorPage,'前一页'); //'Prior page'; cxSetResourceString(@cxNavigatorHint_Next,'下一条记录'); //'Next record'; cxSetResourceString(@cxNavigatorHint_NextPage,'下一页'); //'Next page'; cxSetResourceString(@cxNavigatorHint_Last,'最后一条记录'); //'Last record'; cxSetResourceString(@cxNavigatorHint_Insert,'插入记录'); //'Insert record'; cxSetResourceString(@cxNavigatorHint_Delete,'删除记录'); //'Delete record'; cxSetResourceString(@cxNavigatorHint_Edit,'编辑记录'); //'Edit record'; cxSetResourceString(@cxNavigatorHint_Post,'提交编辑'); //'Post edit'; cxSetResourceString(@cxNavigatorHint_Cancel,'取消编辑'); //'Cancel edit'; cxSetResourceString(@cxNavigatorHint_Refresh,'刷新数据'); //'Refresh data'; cxSetResourceString(@cxNavigatorHint_SaveBookmark,'保存书签'); //'Save Bookmark'; cxSetResourceString(@cxNavigatorHint_GotoBookmark,'跳至书签'); //'Goto Bookmark'; cxSetResourceString(@cxNavigatorHint_Filter,'过滤数据'); //'Filter data'; cxSetResourceString(@cxNavigator_DeleteRecordQuestion,'删除记录?'); //'Delete record?'; end;
本文固定链接: http://www.loujing.com/blog/expressquantumgrid-suite/ | 楼竞网站