云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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
          @彭漢生
          比較困難
          主站蜘蛛池模板: 海安县| 壤塘县| 绥中县| 罗源县| 伊通| 大城县| 吉首市| 秦安县| 红桥区| 旌德县| 宁化县| 孟州市| 郓城县| 龙井市| 芦溪县| 仙桃市| 虞城县| 霞浦县| 普兰店市| 永济市| 理塘县| 龙口市| 香港| 南陵县| 新乐市| 清丰县| 太原市| 云南省| 镇坪县| 溧阳市| 鄯善县| 沂源县| 金阳县| 额济纳旗| 威海市| 镇雄县| 马边| 平定县| 呼伦贝尔市| 寻乌县| 阿城市|