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

  • 相关阅读:
    Sqlserver 实际开发中表变量的用法
    Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性
    Python Day 19 面向对象(初识面向对象)
    Python Day 18 常用模块(模块和包)
    Python Day 17 常用模块(常用模块一 时间模块,random模块,os模块,sys模块,序列化模块)
    Python Day 15 函数(递归函数、二分查找算法)
    Python Day 14 函数(内置函数,匿名函数(lambda表达式))
    Python Day 13 函数(迭代器,生成器,列表推导式,生成器表达式)
    Python Day 11 + Python Day 12 函数(函数名的应用,闭包,装饰器)
    Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)
  • 原文地址:https://www.cnblogs.com/shaoming01/p/devexpress_Chinesization.html
Copyright © 2011-2022 走看看