云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
第一步. 使用正统的Localizer方法
在项目中添加一个类ChnReportLocalizer,继承ReportLocalizer,将ReportLocalizer类的所有代码拷贝过来。原来的代码返回的都是英文,我们需要全部翻译成中文
比如原来是    case ReportStringId.Msg_FileNotFound:
                    return "File not found.";
我们修改成:
            case ReportStringId.Msg_FileNotFound:
                    return "文件没有找到";
全部翻译完毕后,赋值
DevExpress.XtraReports.Localization.ReportLocalizer.Active = new ChnReportLocalizer();
再次运行XtraReports的Designer,发现只有第一个Pointer被正确的翻译了,下面的CheckBox、RichText等等都还是英文。查找原因发现工具箱的控件是动态生成的,在XtraReports.UserDesigner.Native.AsmHelper中的函数GetToolboxItems负责往工具箱内添加控件。控件显示的名称就是ToolboxItem的DisplayName。

OK,搞清楚之后开始动手修改,
1. 在XtraReports.Localization.ReportStringId这个枚举中添加控件对应的枚举,比如:Subreport对应添加枚举值为UD_SubreportCaption,CheckBox添加的枚举值为UD_CheckBoxCaption,控件名与枚举值的名称需要有对应关系,因为需要使用Enum.Parse根据控件的名称映射枚举值。
2. 在ChnReportLocalizer中添加对应的翻译,case ReportStringID.UD_SubreportCaption : return "子报表"; 等等。
3. 在AsmHelper中修改原代码,新生成的ToolboxItem不再直接添加到ArrayList中,先进行DisplayName的本地化。先根据DisplayName使用Enum.Parse获得枚举值,然后调用ReportLocalizer.GetString获得本地化的字符串赋值给ToolboxItem.DisplayName。





评论

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)[未登录]  回复  更多评论   

2007-04-06 09:29 by Jason
能不能給個例子呀? 謝謝!

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)[未登录]  回复  更多评论   

2007-04-06 09:30 by Jason
case BarString.ToolbarNameCaption:
return "工具列名稱(&T):"

怎麼也變不過來呀

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)[未登录]  回复  更多评论   

2007-04-07 18:40 by 云自无心水自闲
只添加 Localization类是不够的,关键还要把这个类的实例赋值给Active属性

DevExpress.XtraReports.Localization.ReportLocalizer.Active = new ChnReportLocalizer();
这句话加上。

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)  回复  更多评论   

2007-09-04 14:23 by gotonext
您好,我现在也想汉化xtraReport,您的教程给了我很大的帮助,可是对于控件的显示名称我还是做不出来,劳驾您指点一二。谢谢。

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)  回复  更多评论   

2007-09-04 14:29 by gotonext
您好!我没有XtraReport的源代码,是不是就不能按照您说的方式进行控件名称的汉化?
非常期待您的帮助,我的Email:anpangjunliang@gmail.com
再次感谢。

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)[未登录]  回复  更多评论   

2007-09-10 14:18 by 云自无心水自闲
@gotonext
It's true that without the source code, you can't I18N the control's name.

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)  回复  更多评论   

2010-12-25 17:05 by 鬼地方
粉红色

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)  回复  更多评论   

2011-04-14 14:56 by 彭汉生
没有源码能彻底汉化吗

# re: DevExpress XtraReports设计器中工具箱控件的本地化(主要是汉化)  回复  更多评论   

2011-04-18 17:30 by usherlight
@彭汉生
比较困难

只有注册用户登录后才能发表评论。


网站导航: