所有 Developer Express .NET 產品均內建本地化資源:按鈕文字、屬性描述、選單項、確認/錯誤訊息等。這些資源字串可輕鬆翻譯為各國語言。本文專注 **ASP.NET WebForms (ASPxControls)** 漢化實作,提供最簡單實用的「資源檔法」。
WebForms 漢化效果圖
| 方式 | 優點 | 缺點 | 建議場景 |
|---|---|---|---|
| 1. 官方/第三方資源包 | 零程式碼、部署簡單 | 資源可能不全、版本需對應 | 快速上線、標準術語即可 |
| 2. 程式碼繼承 Localizer | 完全客製、可動態切換 | 程式碼量大、維護成本高 | 特殊術語、多語系動態切換 |
| 3. 資源包 + 程式碼補充 | 兼具效率與彈性 | 仍需處理強名金鑰簽署問題 | 大多數實務專案 |
專案右鍵 → 「加入」 → 「加入 ASP.NET 資料夾」 → 選擇 App_GlobalResources。

來源路徑 (依安裝版本而異):
C:\Program Files\Developer Express .NET vX.Y\Sources\DevExpress.Web.ASPxGlobalResources\
將所有 .resx 檔案完整複製到 App_GlobalResources。
.resx (如 DevExpress_Web_ASPxEditors_vX_Y.resx) 並重命名為 DevExpress_Web_ASPxEditors_vX_Y.zh-CHS.resx,用 Visual Studio 逐項翻譯。
編輯 .zh-CHS.resx 檔案畫面
<system.web>
<globalization uiCulture="zh-CHS" culture="zh-CHS" />
</system.web>
每個控制項組件有對應的 Localizer 基類,需建立衍生類別並覆寫 GetLocalizedString。
| 控制項套件 | Localizer 類別 |
|---|---|
| ASPxEditors | DevExpress.Web.ASPxEditors.Localization.ASPxEditorsLocalizer |
| ASPxGridView | DevExpress.Web.ASPxGridView.Localization.ASPxGridViewLocalizer |
| ASPxPivotGrid | DevExpress.Web.ASPxPivotGrid.Localization.ASPxPivotGridLocalizer |
| ASPxScheduler | DevExpress.Web.ASPxScheduler.Localization.ASPxSchedulerLocalizer |
| ASPxTreeList | DevExpress.Web.ASPxTreeList.Localization.ASPxTreeListLocalizer |
| ASPxMenu | DevExpress.Web.ASPxMenu.Localization.ASPxMenuLocalizer |
| ASPxNavBar | DevExpress.Web.ASPxNavBar.Localization.ASPxNavBarLocalizer |
| ASPxSpellChecker | DevExpress.Web.ASPxSpellChecker.Localization.ASPxSpellCheckerLocalizer |
using DevExpress.Web.ASPxEditors.Localization;
using DevExpress.Web.Localization;
public class CustomEditorsLocalizer : ASPxEditorsLocalizer
{
public override string GetLocalizedString(ASPxEditorsStringId id)
{
switch (id)
{
// PictureEdit 選單
case ASPxEditorsStringId.PictureEditMenuCut: return "剪下";
case ASPxEditorsStringId.PictureEditMenuCopy: return "複製";
case ASPxEditorsStringId.PictureEditMenuPaste: return "貼上";
case ASPxEditorsStringId.PictureEditMenuDelete: return "刪除";
case ASPxEditorsStringId.PictureEditMenuLoad: return "載入";
case ASPxEditorsStringId.PictureEditMenuSave: return "儲存";
// TextEdit 選單
case ASPxEditorsStringId.TextEditMenuCut: return "剪下";
case ASPxEditorsStringId.TextEditMenuCopy: return "複製";
case ASPxEditorsStringId.TextEditMenuPaste: return "貼上";
case ASPxEditorsStringId.TextEditMenuDelete: return "刪除";
case ASPxEditorsStringId.TextEditMenuSelectAll: return "全選";
case ASPxEditorsStringId.TextEditMenuUndo: return "復原";
// DateEdit
case ASPxEditorsStringId.DateEditToday: return "今天";
case ASPxEditorsStringId.DateEditClear: return "清除";
default: return base.GetLocalizedString(id); // 保留英文原文
}
}
}
protected void Application_Start(object sender, EventArgs e)
{
ASPxEditorsLocalizer.Active = new CustomEditorsLocalizer();
ASPxGridViewLocalizer.Active = new CustomGridViewLocalizer();
// ... 其他控制項同理
}
protected void Application_Start(object sender, EventArgs e)
{
// 1. 載入資源包 (需 App_GlobalResources 已部署 .zh-CHS.resx)
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CHS");
// 2. 針對資源包未涵蓋或翻譯不當的部分,以程式碼覆寫
ASPxEditorsLocalizer.Active = new CustomEditorsLocalizer();
}
App_GlobalResources 下的 .zh-CHS.resx,無需重簽署。GetLocalizedString 時,default: return base.GetLocalizedString(id); 可保留原文。Page_Init 依使用者偏好設定 CurrentUICulture 並重新指派 Localizer.Active。WinForms 更簡單:直接將安裝目錄下的 zh-CHS 資源包資料夾複製到執行檔目錄,並在 Main() 設定文化:
static void Main()
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CHS");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
若作業系統語系已為中文,甚至可省略設定文化行。
DevExpress WebForms 漢化,**資源包法 (App_GlobalResources + .zh-CHS.resx + web.config globalization)** 是成本最低、維護最易的方案。若有特殊術語需求,再以 **Localizer 繼承** 精準覆寫。兩者結合即可滿足 99% 專案需求。