【下一篇】【上一篇】
0

ExpressQuantumGrid Suite部分汉化

作者:楼竞  发表于:2006年02月22日 19:51  分类:Program   3,583 次阅读 

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;

历史上的今天:

  1. 2007:  《越狱》(Prison Break) 在线观看(更新至第二季第22集,第二季完结)(0)

本文固定链接: http://www.loujing.com/blog/expressquantumgrid-suite/ | 楼竞网站

给我留言

快捷键:Ctrl+Enter