Devexpress(DXperience) 10.1.6 我有自己简单的方式来汉化

汉化嘛,照说已经有源代码了,汉化是比较简单的事情,不过如果直接修改源代码的话,下次再升级可能会不太好搞,所以一般情况下我不喜欢乱改源代码,而且还有更好的方式汉化。


我是写winform的,插入的控件也不是特别多,好像需要汉化的只有显示的XtraMessageBox.Show下面的“是”“否”“确定”“取消”什么的这些东东需要汉化了。

我相信大家一看到下面这个重写的函数应该就明白差不多了,我只把我需要的几个按钮给替换成中文就好了。

  1 using DevExpress.XtraEditors.Controls;
  2 namespace LocalizationCHS
  3 {
  4     public class DevExpressXtraEditorsLocalizationCHS : Localizer
  5     {
  6         public override string GetLocalizedString(StringId id)
  7         {
  8             switch (id)
  9             {
 10                 case StringId.None: return "";
 11                 case StringId.CaptionError: return "错误";
 12                 case StringId.InvalidValueText: return "无效数值";
 13                 case StringId.CheckChecked: return "已选";
 14                 case StringId.CheckUnchecked: return "未选";
 15                 case StringId.CheckIndeterminate: return "Indeterminate";
 16                 case StringId.DateEditToday: return "今天";
 17                 case StringId.DateEditClear: return "清除";
 18                 case StringId.OK: return "确定";
 19                 case StringId.Cancel: return "取消";
 20                 case StringId.NavigatorFirstButtonHint: return "First";
 21                 case StringId.NavigatorPreviousButtonHint: return "Previous";
 22                 case StringId.NavigatorPreviousPageButtonHint: return "Previous Page";
 23                 case StringId.NavigatorNextButtonHint: return "Next";
 24                 case StringId.NavigatorNextPageButtonHint: return "Next Page";
 25                 case StringId.NavigatorLastButtonHint: return "Last";
 26                 case StringId.NavigatorAppendButtonHint: return "Append";
 27                 case StringId.NavigatorRemoveButtonHint: return "Delete";
 28                 case StringId.NavigatorEditButtonHint: return "Edit";
 29                 case StringId.NavigatorEndEditButtonHint: return "End Edit";
 30                 case StringId.NavigatorCancelEditButtonHint: return "Cancel Edit";
 31                 case StringId.NavigatorTextStringFormat: return "Record {0} of {1}";
 32                 case StringId.PictureEditMenuCut: return "Cut";
 33                 case StringId.PictureEditMenuCopy: return "Copy";
 34                 case StringId.PictureEditMenuPaste: return "Paste";
 35                 case StringId.PictureEditMenuDelete: return "Delete";
 36                 case StringId.PictureEditMenuLoad: return "Load";
 37                 case StringId.PictureEditMenuSave: return "Save";
 38                 case StringId.PictureEditOpenFileFilter: return "Bitmap Files (*.bmp)|*.bmp|" +
 39                         "Graphics Interchange Format (*.gif)|*.gif|" +
 40                         "JPEG File Interchange Format (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
 41                         "Icon Files (*.ico)|*.ico|" +
 42                         "All Picture Files |*.bmp;*.gif;*.jpg;*.jpeg;*.ico;*.png;*.tif|" +
 43                         "All Files |*.*";
 44                 case StringId.PictureEditSaveFileFilter: return "Bitmap Files (*.bmp)|*.bmp|" +
 45                         "Graphics Interchange Format (*.gif)|*.gif|" +
 46                         "JPEG File Interchange Format (*.jpg)|*.jpg";
 47                 case StringId.PictureEditOpenFileTitle: return "Open";
 48                 case StringId.PictureEditSaveFileTitle: return "Save As";
 49                 case StringId.PictureEditOpenFileError: return "Wrong picture format";
 50                 case StringId.PictureEditOpenFileErrorCaption: return "Open error";
 51                 case StringId.PictureEditCopyImageError: return "Could not copy image";
 52                 case StringId.LookUpEditValueIsNull: return "[EditValue is null]";
 53                 case StringId.LookUpInvalidEditValueType: return "Invalid LookUpEdit EditValue type.";
 54                 case StringId.LookUpColumnDefaultName: return "Name";
 55                 case StringId.MaskBoxValidateError: return "The entered value is incomplete.  Do you want to correct it?\r\n\r\n" +
 56                         "Yes - return to the editor and correct the value.\r\n" +
 57                         "No - leave the value as is.\r\n" +
 58                         "Cancel - reset to the previous value.\r\n";
 59                 case StringId.UnknownPictureFormat: return "Unknown picture format";
 60                 case StringId.DataEmpty: return "No image data";
 61                 case StringId.NotValidArrayLength: return "Not valid array length.";
 62                 case StringId.ImagePopupEmpty: return "(Empty)";
 63                 case StringId.ImagePopupPicture: return "(Picture)";
 64                 case StringId.ColorTabCustom: return "Custom";
 65                 case StringId.ColorTabWeb: return "Web";
 66                 case StringId.ColorTabSystem: return "System";
 67                 case StringId.CalcButtonMC: return "MC";
 68                 case StringId.CalcButtonMR: return "MR";
 69                 case StringId.CalcButtonMS: return "MS";
 70                 case StringId.CalcButtonMx: return "M+";
 71                 case StringId.CalcButtonSqrt: return "sqrt";
 72                 case StringId.CalcButtonBack: return "Back";
 73                 case StringId.CalcButtonCE: return "CE";
 74                 case StringId.CalcButtonC: return "C";
 75                 case StringId.CalcError: return "Calculation Error";
 76                 case StringId.TabHeaderButtonPrev: return "Scroll Left";
 77                 case StringId.TabHeaderButtonNext: return "Scroll Right";
 78                 case StringId.TabHeaderButtonClose: return "关闭";
 79                 case StringId.XtraMessageBoxOkButtonText: return "确定";
 80                 case StringId.XtraMessageBoxCancelButtonText: return "取消";
 81                 case StringId.XtraMessageBoxYesButtonText: return "";
 82                 case StringId.XtraMessageBoxNoButtonText: return "";
 83                 case StringId.XtraMessageBoxAbortButtonText: return "终止";
 84                 case StringId.XtraMessageBoxRetryButtonText: return "重试";
 85                 case StringId.XtraMessageBoxIgnoreButtonText: return "忽略";
 86                 case StringId.TextEditMenuUndo: return "&Undo";
 87                 case StringId.TextEditMenuCut: return "Cu&t";
 88                 case StringId.TextEditMenuCopy: return "&Copy";
 89                 case StringId.TextEditMenuPaste: return "&Paste";
 90                 case StringId.TextEditMenuDelete: return "&Delete";
 91                 case StringId.TextEditMenuSelectAll: return "Select &All";
 92                 case StringId.FilterShowAll: return "(Select All)";
 93                 case StringId.FilterGroupAnd: return "And";
 94                 case StringId.FilterGroupNotAnd: return "Not And";
 95                 case StringId.FilterGroupNotOr: return "Not Or";
 96                 case StringId.FilterGroupOr: return "Or";
 97                 case StringId.FilterClauseAnyOf: return "Is any of";
 98                 case StringId.FilterClauseBeginsWith: return "Begins with";
 99                 case StringId.FilterClauseBetween: return "Is between";
100                 case StringId.FilterClauseBetweenAnd: return "and";
101                 case StringId.FilterClauseContains: return "Contains";
102                 case StringId.FilterClauseEndsWith: return "Ends with";
103                 case StringId.FilterClauseEquals: return "Equals";
104                 case StringId.FilterClauseGreater: return "Is greater than";
105                 case StringId.FilterClauseGreaterOrEqual: return "Is greater than or equal to";
106                 case StringId.FilterClauseIsNotNull: return "Is not blank";
107                 case StringId.FilterClauseIsNull: return "Is blank";
108                 case StringId.FilterClauseLess: return "Is less than";
109                 case StringId.FilterClauseLessOrEqual: return "Is less than or equal to";
110                 case StringId.FilterClauseLike: return "Is like";
111                 case StringId.FilterClauseNoneOf: return "Is none of";
112                 case StringId.FilterClauseNotBetween: return "Is not between";
113                 case StringId.FilterClauseDoesNotContain: return "Does not contain";
114                 case StringId.FilterClauseDoesNotEqual: return "Does not equal";
115                 case StringId.FilterClauseNotLike: return "Is not like";
116                 case StringId.FilterEmptyEnter: return "<enter a value>";
117                 case StringId.FilterEmptyParameter: return "<enter a parameter>";
118                 case StringId.FilterMenuAddNewParameter: return "Add a new parameter ...";
119                 case StringId.FilterEmptyValue: return "<empty>";
120                 case StringId.FilterMenuConditionAdd: return "Add Condition";
121                 case StringId.FilterMenuGroupAdd: return "Add Group";
122                 case StringId.FilterMenuClearAll: return "Clear All";
123                 case StringId.FilterMenuRowRemove: return "Remove Group";
124                 case StringId.FilterToolTipNodeAdd: return "Adds a new condition to this group";
125                 case StringId.FilterToolTipNodeRemove: return "Removes this condition";
126                 case StringId.FilterToolTipNodeAction: return "Actions";
127                 case StringId.FilterToolTipValueType: return "Compare with a value / another field's value";
128                 case StringId.FilterToolTipElementAdd: return "Adds a new item to the list";
129                 case StringId.FilterToolTipKeysAdd: return "(Use the Insert or Add key)";
130                 case StringId.FilterToolTipKeysRemove: return "(Use the Delete or Subtract key)";
131                 case StringId.ContainerAccessibleEditName: return "Editing control";
132                 case StringId.FilterCriteriaToStringGroupOperatorAnd: return "And";
133                 case StringId.FilterCriteriaToStringGroupOperatorOr: return "Or";
134                 case StringId.FilterCriteriaToStringUnaryOperatorBitwiseNot: return "~";
135                 case StringId.FilterCriteriaToStringUnaryOperatorIsNull: return "Is Null";
136                 case StringId.FilterCriteriaToStringUnaryOperatorMinus: return "-";
137                 case StringId.FilterCriteriaToStringUnaryOperatorNot: return "Not";
138                 case StringId.FilterCriteriaToStringUnaryOperatorPlus: return "+";
139                 case StringId.FilterCriteriaToStringBinaryOperatorBitwiseAnd: return "&";
140                 case StringId.FilterCriteriaToStringBinaryOperatorBitwiseOr: return "|";
141                 case StringId.FilterCriteriaToStringBinaryOperatorBitwiseXor: return "^";
142                 case StringId.FilterCriteriaToStringBinaryOperatorDivide: return "/";
143                 case StringId.FilterCriteriaToStringBinaryOperatorEqual: return "=";
144                 case StringId.FilterCriteriaToStringBinaryOperatorGreater: return ">";
145                 case StringId.FilterCriteriaToStringBinaryOperatorGreaterOrEqual: return ">=";
146                 case StringId.FilterCriteriaToStringBinaryOperatorLess: return "<";
147                 case StringId.FilterCriteriaToStringBinaryOperatorLessOrEqual: return "<=";
148                 case StringId.FilterCriteriaToStringBinaryOperatorLike: return "Like";
149                 case StringId.FilterCriteriaToStringBinaryOperatorMinus: return "-";
150                 case StringId.FilterCriteriaToStringBinaryOperatorModulo: return "%";
151                 case StringId.FilterCriteriaToStringBinaryOperatorMultiply: return "*";
152                 case StringId.FilterCriteriaToStringBinaryOperatorNotEqual: return "<>";
153                 case StringId.FilterCriteriaToStringBinaryOperatorPlus: return "+";
154                 case StringId.FilterCriteriaToStringBetween: return "Between";
155                 case StringId.FilterCriteriaToStringIn: return "In";
156                 case StringId.FilterCriteriaToStringIsNotNull: return "Is Not Null";
157                 case StringId.FilterCriteriaToStringNotLike: return "Not Like";
158                 case StringId.FilterCriteriaToStringFunctionIif: return "Iif";
159                 case StringId.FilterCriteriaToStringFunctionIsNull: return "IsNull";
160                 case StringId.FilterCriteriaToStringFunctionLen: return "Len";
161                 case StringId.FilterCriteriaToStringFunctionLower: return "Lower";
162                 case StringId.FilterCriteriaToStringFunctionNone: return "None";
163                 case StringId.FilterCriteriaToStringFunctionSubstring: return "Substring";
164                 case StringId.FilterCriteriaToStringFunctionTrim: return "Trim";
165                 case StringId.FilterCriteriaToStringFunctionUpper: return "Upper";
166                 case StringId.FilterCriteriaToStringFunctionCustom: return "Custom";
167                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeThisYear:
168                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeThisMonth:
169                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeLastWeek:
170                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeThisWeek:
171                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeYesterday:
172                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeToday:
173                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeNow:
174                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeTomorrow:
175                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeDayAfterTomorrow:
176                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeNextWeek:
177                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeTwoWeeksAway:
178                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeNextMonth:
179                 case StringId.FilterCriteriaToStringFunctionLocalDateTimeNextYear:
180                     return id.ToString().Substring("FilterCriteriaToStringFunctionLocalDateTime".Length);
181                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalBeyondThisYear:
182                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalLaterThisYear:
183                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalLaterThisMonth:
184                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalNextWeek:
185                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalLaterThisWeek:
186                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalTomorrow:
187                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalToday:
188                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalYesterday:
189                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalEarlierThisWeek:
190                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalLastWeek:
191                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalEarlierThisMonth:
192                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalEarlierThisYear:
193                 case StringId.FilterCriteriaToStringFunctionIsOutlookIntervalPriorThisYear:
194                     return "Is" + id.ToString().Substring("FilterCriteriaToStringFunctionIsOutlookInterval".Length);
195                 case StringId.FilterCriteriaInvalidExpression:
196                     return "The specified expression contains invalid symbols (line {0}, character {1}).";
197                 case StringId.FilterCriteriaInvalidExpressionEx:
198                     return "The specified expression is invalid.";
199                 case StringId.Apply: return "Apply";
200                 case StringId.PreviewPanelText: return "Preview:";
201                 case StringId.TransparentBackColorNotSupported: return "This control does not support transparent background colors";
202                 case StringId.FilterOutlookDateText:
203                     return "Show all|Show Empty|Filter by a specific date:|Beyond this year|Later this year|Later this month|Next week|" +
204                            "Later this week|Tomorrow|Today|Yesterday|Earlier this week|Last week|Earlier this month|Earlier this year|" +
205                            "Prior to this year";
206                 case StringId.FilterDateTextAlt:
207                     return "Show all|Show Empty|Filter by a specific date:|Beyond|||Next week|Today|This week|This month|Earlier|{0:yyyy}, {0:MMMM}";
208                 case StringId.FilterDateTimeConstantMenuCaption:
209                     return "DateTime constants";
210                 case StringId.FilterDateTimeOperatorMenuCaption:
211                     return "DateTime operators";
212             }
213             return "";
214         }
215     }
216 }
217  
 

这些代码可以直接放在winform项目里,也可以作为一个单独的DLL存放了。

然后再把这句加入到Winform的Form_load第一行里就可以了 
 DevExpress.XtraEditors.Controls.Localizer.Active = new LocalizationCHS.DevExpressXtraEditorsLocalizationCHS();

 有人可能要问我上面重写的函数是怎么来的。很简单,直接在Devexpress(DXperience) 10.1.6源代码里搜索就有了。找到了COPY一份出来,然后把需要的内容改成中文就好了。

我的汉化方式只适合于小量的汉化, 不适合规模太大的。

如果在现成完整的

Devexpress 在设计的时候已经有一套比较完善的多语言方案了。官方也有相关的下载,但我没有用到,以后用到的可能性也不是太大,所以我没有研究,大家可以去官方多看看。

 

还有一套现成的比较完整的方案是fosoyo.com提供的。我是花钱买来的,不是我舍不得钱,只是人家自己搞点东西....不能肆意的糟蹋嘛。

原文地址:https://www.cnblogs.com/shaoming01/p/devexpress_Chinesization.html