zoukankan      html  css  js  c++  java
  • 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提供的。我是花钱买来的,不是我舍不得钱,只是人家自己搞点东西....不能肆意的糟蹋嘛。

  • 相关阅读:
    Adaptive Cursor Sharing in Oracle Database 11g Release 1
    FORALL Support for NonConsecutive Indexes (Sparse Collections)
    设置会话TRACE的方法(一)
    Oracle 10g: UTL_MAIL
    Oracle :Parallel execution when table created.
    Server.MapPath
    Oracle10g :Nested Table Enhancements
    Asktom:Single Block IO Vs Multi Block IO
    Oracle10g新增DBMS_MONITOR包(一)
    设置会话TRACE的方法(二)
  • 原文地址:https://www.cnblogs.com/shaoming01/p/devexpress_Chinesization.html
Copyright © 2011-2022 走看看