星期三, 11月 07, 2007

Foreach Enum AND Localization Devexpress Controls

要將devexpress中文化其實並不難,只要透過指定一個對照表的類別給系統即可
例如 要將Grid中文化可以透過如下的做法
GridLocalizer.Active = new XtraGridLocalizationCHT();

class XtraGridLocalizationCHT : GridLocalizer {
public override string GetLocalizedString(GridStringId id) {
switch (id) {
case GridStringId.FileIsNotFoundError: return "檔案{0}沒有找到";
...
}}}

中文化產品的對照表如下
Product / access objectname
XtraEditors / StringId
XtraGrid / GridStringId
XtraNavBar / NavBarStringId
XtraPivotGrid / PivotGridStringId
XtraPrinting / PreviewStringId
XtraReports / ReportStringId
XtraScheduler / SchedulerStringId
XtraTreeList / TreeListStringId
XtraVerticalGrid /VGridStringId

而類別的定義若你的購買的devexpress是有包含source那可以由source中找.要不然你可以用程式自行來產生! 例如如下的語法可以產生id與顯示英文名稱的對照表,當你有有對照表後,你可以自行翻譯或是寫成程式產生器,不管日後版本怎麼變都可以保持在最新的狀態
foreach (int i in Enum.GetValues(typeof(GridStringId)))
{
MessageBox.Show(
Enum.Parse(typeof(GridStringId), i.ToString(), true).ToString()+" : "+
GridLocalizer.Active.GetLocalizedString((GridStringId)Enum.Parse(typeof(GridStringId), i.ToString(), true)).ToString() );
}

0 個意見: