首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

DevExpress ASP.NET 控制項漢化完整指南 (WebForms 專用)

     編輯:關於.NET

前言:DevExpress 本地化機制

所有 Developer Express .NET 產品均內建本地化資源:按鈕文字、屬性描述、選單項、確認/錯誤訊息等。這些資源字串可輕鬆翻譯為各國語言。本文專注 **ASP.NET WebForms (ASPxControls)** 漢化實作,提供最簡單實用的「資源檔法」。

漢化前後對比

WebForms 漢化效果圖

三種漢化方式比較

方式優點缺點建議場景
1. 官方/第三方資源包零程式碼、部署簡單資源可能不全、版本需對應快速上線、標準術語即可
2. 程式碼繼承 Localizer完全客製、可動態切換程式碼量大、維護成本高特殊術語、多語系動態切換
3. 資源包 + 程式碼補充兼具效率與彈性仍需處理強名金鑰簽署問題大多數實務專案

方法一:使用官方中文資源包 (最推薦、最簡單)

步驟 1:建立全域資源資料夾

專案右鍵 → 「加入」 → 「加入 ASP.NET 資料夾」 → 選擇 App_GlobalResources。

步驟 2:複製官方資源檔

來源路徑 (依安裝版本而異):

C:\Program Files\Developer Express .NET vX.Y\Sources\DevExpress.Web.ASPxGlobalResources\

將所有 .resx 檔案完整複製到 App_GlobalResources。

步驟 3:下載/建立中文資源檔

  1. 優先至 DevExpress 官網 KB=A421 下載對應版本的中文資源包。
  2. 若無對應版本:複製現有 .resx (如 DevExpress_Web_ASPxEditors_vX_Y.resx) 並重命名為 DevExpress_Web_ASPxEditors_vX_Y.zh-CHS.resx,用 Visual Studio 逐項翻譯。

編輯 .zh-CHS.resx 檔案畫面

步驟 4:修改 web.config 設定預設文化

<system.web>
  <globalization uiCulture="zh-CHS" culture="zh-CHS" />
</system.web>

方法二:程式碼繼承 Localizer (進階客製)

每個控制項組件有對應的 Localizer 基類,需建立衍生類別並覆寫 GetLocalizedString。

主要 Localizer 對照表

控制項套件Localizer 類別
ASPxEditorsDevExpress.Web.ASPxEditors.Localization.ASPxEditorsLocalizer
ASPxGridViewDevExpress.Web.ASPxGridView.Localization.ASPxGridViewLocalizer
ASPxPivotGridDevExpress.Web.ASPxPivotGrid.Localization.ASPxPivotGridLocalizer
ASPxSchedulerDevExpress.Web.ASPxScheduler.Localization.ASPxSchedulerLocalizer
ASPxTreeListDevExpress.Web.ASPxTreeList.Localization.ASPxTreeListLocalizer
ASPxMenuDevExpress.Web.ASPxMenu.Localization.ASPxMenuLocalizer
ASPxNavBarDevExpress.Web.ASPxNavBar.Localization.ASPxNavBarLocalizer
ASPxSpellCheckerDevExpress.Web.ASPxSpellChecker.Localization.ASPxSpellCheckerLocalizer

實作範例:ASPxEditors 選單漢化

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); // 保留英文原文
        }
    }
}

啟用自訂 Localizer (在 Application_Start 或 Page_Init)

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();
}

常見問題與技巧

  1. 強名金鑰問題:官方資源包簽署了 DevExpress 強名金鑰,若修改後重新編譯會失效。解法:直接編輯 App_GlobalResources 下的 .zh-CHS.resx,無需重簽署。
  2. 版本對應:資源檔版本必須與引用的 DLL 版本完全一致 (含 vX.Y),否則不會生效。
  3. 部分翻譯保留英文:覆寫 GetLocalizedString 時,default: return base.GetLocalizedString(id); 可保留原文。
  4. 動態切換語系:在 Page_Init 依使用者偏好設定 CurrentUICulture 並重新指派 Localizer.Active。

WinForms 專案漢化 (補充)

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% 專案需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved